使用自定义ListAdapter从ListView中删除项目

时间:2015-03-26 18:34:20

标签: java android listview

public class MyListAdapter extends ArrayAdapter<Object>{
...
@Override
public View getView(int position, View convertView, ViewGroup parent) {
        ...
        ...
        delete.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
                if (...) {
                    MyListAdapter.this.remove(); //what parameter to pass?
                    MyListAdapter.this.notifyDataSetChanged();
                    MyListAdapter.this.notifyDataSetInvalidated();
                } else {
                    Toast.makeText(v.getContext(), "Error deleting item.", Toast.LENGTH_SHORT);
                }
         ...
         ...

我正在创建自定义ArrayAdapter,listview项目布局中有一个按钮,单击时我想从列表视图中删除listview项目。我不确定我做得对..

任何帮助都会得到满足,谢谢。

1 个答案:

答案 0 :(得分:0)

之前我做了类似的编码。有两种方法可以做到这一点。您的示例代码:

1)

public void onClick(View v) {
   if (...) {
      this.remove(<object>);
      notifyDataSetChanged();

注意:对象应该相对于position中的项目,在getView()中使用。

2)

public void onClick(View v) {
    if (...) {
       <object>.remove(position);
       notifyDataSetChanged();

注意:object是像getList()中使用的ArrayList,Hashmap这样的容器。

我认为没有必要调用notifyDataSetInvalidated,占用计算机时间。