简体   繁体   English

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

[英]How to delete item from listview using own ArrayAdapter?

I Have problem, I want to delete a row frow listView and this element from ArrayList. 我有问题,我想从ArrayList中删除一行眉形listView和此元素。

This is my new ArrayAdapter 这是我的新ArrayAdapter

private ExpenditureAdapter adapter = null;

and I adding to it data using: 我使用以下方法向其中添加数据:

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

It works correctly, but I want create OnItemClickListener and use it to delete data from listView and from ArrayList<Expenditure> , but how to do it ? 它可以正常工作,但是我想创建OnItemClickListener并使用它从listViewArrayList<Expenditure>删除数据,但是该怎么做呢?

My effort: 我的努力:

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

But ofc it doesn't work.How get index to delete this ? 但是ofc不起作用。如何获取索引来删除它?

Try this 尝试这个

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

You almost have it working, change your listener to this: 您几乎可以正常工作,将听众更改为:

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

Basically, if you are changing the underlying data of an adapter (your ArrayList), you need to notify the adapter so it can update the list accordingly. 基本上,如果要更改适配器(您的ArrayList)的基础数据,则需要通知适配器,以便它可以相应地更新列表。 This will remove the item and then redraw the list. 这将删除该项目,然后重新绘制列表。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM