我的listview包含一些包含一些textview和一个imageview(删除图标)的行布局。这个imagview有xml属性:android:onClick="deleteItem"
现在如何获取按下删除图标的列表行的位置并从列表视图中删除该行?
答案 0 :(得分:0)
使用侦听器可以更简单地完成它:
final ListView listView = findViewById(R.id.listView); // your listview's id here
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
listView.removeViewAt(position);
}
});
编辑:
考虑到您最近的评论,这是如何实现这一目标的一种方式:
ListView mListView;
public class MyAdapter extends ArrayAdapter<String> {
Context context;
int layoutRes;
LayoutInflater inflater;
public MyAdapter(Context context, int resource) {
super(context, resource);
this.context = context;
this.layoutRes = resource;
this.inflater = LayoutInflater.from(context);
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = inflater.inflate(layoutRes, parent, false);
}
ImageView imageView = convertView.findViewById(R.id.myImage);
imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mListView.removeViewAt(position);
}
});
return convertView;
}
}
您可以像这样创建适配器MyAdapter adapter = new MyAdapter(this,R.layout.myLayout);
适配器getView方法返回列表中特定位置的视图,然后指定图像的侦听器,在触发时将删除图像所在的列表项。
通过使用ViewHolder类,可以提高性能。如果您有兴趣:How to get the parent view of a button within a list adapter?
答案 1 :(得分:0)
有两种选择: 一个工具列表上的setOnItemClickListener
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapter, View view, int position,
long id) {
//action to delete item from position.
}
});
另一个选项是当您单击需要在适配器中实现setOnClickListener的图标时。
iviIconDelete.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
//delete the item
}
});
答案 2 :(得分:0)
您可以使用自定义适配器,并在getView
方法中添加OnClickListener
以删除图标,如下所示
delIcon.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
list.remove(position); // remove the item from the data list
notifyDataSetChanged();
}
});