使用自定义适配器从ArrayList中删除项目

时间:2012-08-20 13:55:17

标签: android arraylist adapter

我创建了一个带有自定义适配器的ArrayList,以在每个项目旁边显示一个删除按钮。 如何通过单击相应的删除按钮来删除列表中的一个项目?

我读到我必须在getView()方法中添加以下代码:

btnDel.setTag(position);

接下来我应该将位置转换为int,因为setTag返回一个Object。我该如何管理?

然后,我应该在我的getView()中创建一个onClickListener()函数,如下所示:

btnDel.setOnClick....{
arrayList.remove(index);
adapter.notifyDataSetChanged();}

如何获取当前所选删除按钮的编号或我应该在remove()中添加什么?

我是android的新手,所以请提供代码示例或易于理解的提示:)

感谢。

3 个答案:

答案 0 :(得分:1)

你应该把代码放在getView方法中并使位置最终......

     btnDelete.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {

                arrayList.remove(position);

                notifyDataSetChanged();

            }
        });

答案 1 :(得分:1)

您可以从适配器类中的getview方法编写代码,只需检查此代码即可。

  public View getView(int position, View convertView, ViewGroup parent) {
anyListener.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {

            yourArrayList.remove(position);
            notifyDataSetChanged();
        }
    });
    return convertView;

}

答案 2 :(得分:0)

你需要创建类似于此的东西(至少这是我创建这个函数的方式):

public View getView(int position, View convertView, ViewGroup parent) {
    View vi = convertView;
    ViewHolder holder;
    if (convertView == null) {
        vi = inflater.inflate(R.layout.item, null);
        holder = new ViewHolder();
        holder.name = (Button) vi.findViewById(R.id.delete);
        vi.setTag(holder);
    } else
        holder = (ViewHolder) vi.getTag();
        holder.name.setText("Delete");

        holder.name.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {

            arrayList.remove(position);

            adapter.notifyDataSetChanged();

        }
    });

    return vi;
}

类似的东西对你有用。 希望能帮助到你! :)