java - 让按钮在列表视图中工作
问题描述
我是 android 新手,我的代码有点乱。我已经成功创建了一个从 item_layout.xml 扩展的列表视图。当我单击列表视图时,它完全按照我想要的方式工作。但是,在列表视图的每个项目中,我都有一个按钮,单击该按钮时,我希望删除列表中的项目。
在研究时,我发现您需要创建一个客户适配器来执行此操作,但是我在项目中已经走了这么远,我什至不知道从哪里开始。
当单击列表项时,它成功使用的此代码可以正常工作。这只是放在 Main Activity 类中
mylist.setOnItemClickListener(
new AdapterView.OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> parent, View view, final int position, long id) {
}
}
);
我在主活动类之外使用此函数填充列表。需要这样写,因为它从数据库中获取项目,并且必须根据不同的情况调用
private void populatelistView() {
Cursor res = userDb.getAllRows();
String[] fromFeildnames = new String[]{ DatabaseUser.KEY_1, DatabaseUser.KEY_2};
int[] toViewIds = new int[]{R.id.textViewNum, R.id.textViewItem};
SimpleCursorAdapter myCursorAdaptor;
myCursorAdaptor = new SimpleCursorAdapter(getBaseContext(), R.layout.item_layout, res, fromFeildnames, toViewIds, 0);
//ListView mylist = (ListView) findViewById(R.id.listViewID);
mylist.setAdapter(myCursorAdaptor);
}
我希望能够通过不改变我已经写的大部分内容来让每个项目上的按钮工作。我试过只使用以下代码。但是因为它在不同的 xml 布局中,所以它显示对项目按钮的空引用错误
delete.setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View v) {
View parentRow = (View) v.getParent();
ListView listView = (ListView) parentRow.getParent();
final int position = listView.getPositionForView(parentRow);
Toast.makeText(getApplicationContext(), "Button " + position, Toast.LENGTH_SHORT).show();
}
}
);
请有人可以帮助我在不更改太多代码的情况下使按钮工作,或者给我一个关于如何添加适配器但让我的 populateListView 函数做同样事情的分步教程。
附言。我查看了很多关于列表适配器的教程,但找不到适合我特定需求的教程
解决方案
推荐阅读
- python - 将对象类型的数据框列转换为浮点数
- android - Android 本地广播收不到
- c - 我的代码块编译程序在运行特定代码时崩溃
- node.js - 查询索引 IDB 上的对象
- database - 在 cassandra 中,如果我每个查询都有一个表并且我有多个过滤器组合,我是否为每个查询创建一个表?
- sql-server - 如果我有 tblBookInfo(bookId、title... 等)并且我希望它有类别列,那么最好的方法是什么?
- django - 静态文件仅在 django 管理页面上不加载
- google-compute-engine - 从占用空间更小的磁盘创建图像
- amazon-cloudformation - terraform tf 文件或模块可以自动使资源过期吗?
- ios - 当 UIImageView 的内容模式为 .scaleAspectFill 时,为什么 UIImageView 会超出其约束?