ListView删除点击对应item
时间: 2024-01-17 07:05:30 浏览: 157
要实现 ListView 的删除点击对应 item 的功能,可以按照以下步骤进行:
1. 在 ListView 的 Adapter 中,重写 getView() 方法,为每个 item 的删除按钮设置点击事件。
2. 在点击事件中,获取当前 item 的位置,并从数据源中删除该位置的数据。
3. 调用 Adapter 的 notifyDataSetChanged() 方法,通知 ListView 数据源发生了变化。
示例代码如下:
```
public class MyAdapter extends BaseAdapter {
private List<String> mData;
public MyAdapter(List<String> data) {
mData = data;
}
@Override
public int getCount() {
return mData.size();
}
@Override
public Object getItem(int position) {
return mData.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
convertView = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_layout, parent, false);
holder = new ViewHolder();
holder.text = convertView.findViewById(R.id.text);
holder.delete = convertView.findViewById(R.id.delete);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.text.setText(mData.get(position));
holder.delete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mData.remove(position);
notifyDataSetChanged();
}
});
return convertView;
}
static class ViewHolder {
TextView text;
Button delete;
}
}
```
在上面的代码中,ViewHolder 类用于缓存 item 中的控件,避免重复加载。在 getView() 方法中,为每个 item 的删除按钮设置点击事件,其中通过 mData.remove(position) 删除对应位置的数据,然后再调用 notifyDataSetChanged() 方法刷新 ListView。
注意:如果数据源是一个不可变的 List,例如 Arrays.asList(),则不能直接调用 remove() 方法删除数据,需要先将 List 转换为可变的 ArrayList。
阅读全文