从列表视图中删除项目问题

时间:2014-01-27 16:40:47

标签: android android-listview

我有一个列表视图,其中包含来自数据库的数据,我希望当我点击某个项目

消失了,我使用了--list.remove(position) - 但我有一个错误添加强制转换为列表。

这里是列表视图:

    private void populateListViewFromDB() {
    Cursor cursor = db.getAllRecords();
    startManagingCursor(cursor);
    String[] databaseColumnNames = new String[] { DBAdapter.col_Region };
    int[] toViewIDs = new int[] { android.R.id.text1, android.R.id.text2 };

    SimpleCursorAdapter myCursordapter = new SimpleCursorAdapter(this,
            android.R.layout.simple_expandable_list_item_1, cursor,
            databaseColumnNames, toViewIDs, FLAG_REGISTER_CONTENT_OBSERVER);

    final ListView list = (ListView) findViewById(android.R.id.list);
    list.setAdapter(myCursordapter);

如果我要删除项目,请点击我的代码:

   list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        public void onItemClick(final AdapterView<?> arg0, View arg1,
                final int position, long arg3) {
                 list.remove(position); 
             adapter.notifyDataSetChanged();}

1 个答案:

答案 0 :(得分:1)

没有ListView.remove()方法。您应该从数据模型中删除相应的项目,然后刷新您的适配器。

在OnItemClickListener侦听器中获取绑定数据项:

Object itemObj = adapter.getItem(position);

然后,从您的数据库中删除此项目。

然后获取光标的新实例并更新光标适配器:

if (android.os.Build.VERSION.SDK_INT > android.os.Build.VERSION_CODES.GINGERBREAD){
    adapter.swapCursor(newCurosr);
} else {
    adapter.changeCursor(newCursor);
}

然后,通知列表视图有关数据更改的信息:

adapter.notifyDataSetChanged();