【问题标题】:remove item from ArrayList with Custom Adapter使用自定义适配器从 ArrayList 中删除项目
【发布时间】:2012-08-20 13:55:16
【问题描述】:

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

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

btnDel.setTag(position);

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

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

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

如何获取当前选中的 remove-Button 的编号或者我应该在 remove() 中放入什么?

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

谢谢。

【问题讨论】:

标签: android arraylist adapter


【解决方案1】:

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

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

                arrayList.remove(position);

                notifyDataSetChanged();

            }
        });

【讨论】:

    【解决方案2】:

    您从适配器类内部的 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;
    

    }

    【讨论】:

      【解决方案3】:

      您需要创建类似的东西(至少这是我要创建此功能的方式):

      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;
      }
      

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

      【讨论】:

      • 我如何检查我的 ArrayList 是否为空。我想在列表为空时启用“请插入项目”之类的文本并删除文本,如果列表中至少有一个项目。
      • 向我展示一个如何填充数组列表和初始化自定义适配器的示例。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-14
      • 2020-05-06
      • 2017-09-06
      • 2021-03-03
      • 1970-01-01
      相关资源
      最近更新 更多