android - 长按一下从ListView中删除项目

时间:2013-01-15 15:05:45

标签: android android-listview android-arrayadapter

我在尝试从长按一下从列表视图中删除项目时遇到了一些麻烦。以下是代码:

public class MListViewActivity extends ListActivity {

private ListView lv;
private String[] some_data = null;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    some_data = getResources().getStringArray(R.array.mdata);

    // Bind resources Array to ListAdapter
    ArrayAdapter<String> myAdapter = new ArrayAdapter<String>(this,
            R.layout.list_item, R.id.label, some_data);
    this.setListAdapter(myAdapter);

    lv = getListView();
    lv.setDividerHeight(3);

    lv.setOnItemLongClickListener(new OnItemLongClickListener() {

        @Override
        public boolean onItemLongClick(AdapterView<?> parent, View view,
                int arg2, long arg3) {

            // Can't manage to remove an item here

            return false;
        }
    });
}

感谢任何帮助

3 个答案:

答案 0 :(得分:15)

您不应使用Arrays,应使用ArrayList删除并向Listview添加项目。

声明数组大小后,您可以修改特定索引中的数据,但不能删除项目或添加项目。

所以拿一个ArrayList,就在你长按ListView Item时,只需调用Arraylist的remove方法并通知更改的数据集。

示例:

ArrayList<String> al = new ArrayList<String>();
在你的longclick里面写下面代码来删除项目。

al.remove(arg2);//where arg2 is position of item you click
myAdapter.notifyDataSetChanged();

答案 1 :(得分:11)

lv.setOnItemLongClickListener(new OnItemLongClickListener() {

    @Override
    public boolean onItemLongClick(AdapterView<?> parent, View view,
            int position, long arg3) {

              myAdapter.remove(some_data[position]);
              myAdapter.notifyDataSetChanged();

        return false;
    }

});

答案 2 :(得分:-1)

我在使用这种方法时遇到了问题。我用它来解决它。

            listStat.remove(listStat.get(arg2));
            lvStat.requestLayout();
            adapterStat.notifyDataSetChanged();

我认为这对其他人有帮助。