我有一个列表视图,其中包含来自数据库的数据,我希望当我点击某个项目
时消失了,我使用了--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();}
答案 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();