1

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

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

btnDel.setTag(position);

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

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

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

如何获取当前选定的删除按钮的编号,或者我应该在 remove() 中放入什么?

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

谢谢。

4

3 回答 3

3

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

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

                arrayList.remove(position);

                notifyDataSetChanged();

            }
        });
于 2012-08-20T14:01:32.903 回答
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;

}

于 2012-11-12T09:35:55.610 回答
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;
}

类似的东西应该适合你。希望能帮助到你!:)

于 2012-08-20T14:06:07.250 回答