如何使用自己的 ArrayAdapter 从列表视图中删除项目?

How to delete item from listview using own ArrayAdapter?

我有问题,我想从 ArrayList 中删除 listView 中的一行和这个元素。

这是我的新 ArrayAdapter

private ExpenditureAdapter adapter = null;

我使用以下方法向其中添加数据:

adapter = new ExpenditureAdapter(this,R.layout.activity_show_list,addExpenditure.getExpidentures());
        setListAdapter(adapter);

它工作正常,但我想创建 OnItemClickListener 并使用它从 listViewArrayList<Expenditure> 中删除数据,但如何操作?

我的努力:

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                addExpenditure.getExpidentures().remove();
            }
        });

但是它没有 work.How 获取索引来删除它?

试试这个

 YourListView.setOnItemClickListener(new OnItemClickListener()
   {
      @Override
      public void onItemClick(AdapterView<?> adapter, View v, int position,
            long arg3) 
      {
              YourArrayList.remove(position);
            YourArrayAdapter.notifyDataSetChanged();
      }
   });

你几乎可以正常工作了,把你的监听器改成这样:

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
     @Override
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
         addExpenditure.getExpidentures().remove(position);
         parent.notifyDataSetChanged();
     }
});

基本上,如果您正在更改适配器(您的 ArrayList)的基础数据,您需要通知适配器以便它可以相应地更新列表。这将删除该项目,然后重新绘制列表。