我想从列表视图中单击删除数据库中的行! 我已经设置了所有内容,但是当我这样做时它要么A)不删除该行。或者B)删除顶行!让我知道我做错了什么!谢谢!
这是在我的数据库中:
public boolean deleteKey(String name)
{
SQLiteDatabase db = this.getWritableDatabase();
return db.delete(KeyEntry.TABLE_NAME, KeyEntry.KEY_ID + "=?",
new String[]{name})>0;
}
这在我的列表视图中:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_view__list);
list = (ListView) findViewById(R.id.ListView1);
openDatabase();
list.setAdapter(new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, keyList));
list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parentAdapter, View view,
int position, long id)
{
String name = String.valueOf(id);
keyManager.deleteKey(name);
Toast.makeText(View_List.this, "Key will be deleted",
Toast.LENGTH_LONG).show();
}
});
}
我哪里错了?
答案 0 :(得分:0)
ArrayAdapter将位置返回为id
。然后id
与数据库上的KeyEntry.KEY_ID
不匹配。
使用Database和ListView的最佳方法是使用CursorAdapter。在这种情况下,onItemClick Listener上的id参数将是数据库ID。 CursorAdapter需要更多的代码来实现,但它更灵活。