Android:如何从listView和arrayAdapter中删除项目

gon*_*ins 14 android listview arraylist

我有一个ArrayList中的项集合.我将它们添加到客户适配器,如下所示:

this.m_adapter = new MyAdapter(this, R.layout.myitem,
    itemCart.m_items);
Run Code Online (Sandbox Code Playgroud)

我的列表中的每个项目都有一个删除按钮,但我不知道如何将删除按钮onClick()与ArrayList中的原始项目连接.有人可以解释如何做到这一点或指向我的教程,我可以阅读这个?非讽刺/非居高临下的回应非常感谢.

jcu*_*nod 26

你可以调用你的remove()方法ArrayList

itemCart.m_items.remove(<index of element to remove>);
this.m_adapter.notifyDataSetChanged();
Run Code Online (Sandbox Code Playgroud)

然后你需要调用notifyDataSetChanged();你的适配器来更新ListView


gon*_*ins 7

到目前为止,这是我的解决方案:

getView()方法中我做这样的事情:

deleteButton.setTag(position);
Run Code Online (Sandbox Code Playgroud)

它看起来像getTag()返回一个Object.所以我首先将位置int转换为Integer对象.它似乎有效.

OnClickListener()我做以下事项:

items.remove(index.intValue());
Run Code Online (Sandbox Code Playgroud)

到现在为止还挺好.


小智 7

您可以通过简单地注意到列表视图是子视图的集合(列表的行)来获取元素的索引.

您可以在代码中执行以下操作:

(例如,在getView()方法内部)

row.setOnLongClickListener(new OnLongClickListener() 
{
    @Override
    public boolean onLongClick(View view) {
        remove(listView.indexOfChild(view));
        return true;
    }
}
Run Code Online (Sandbox Code Playgroud)

也就是说,解决方案只是使用indexOfChild(View)方法来获取用户(长)按下的子视图的索引.