如何从ListView onClickAdapter中删除数据库中的行?

时间:2013-11-15 22:42:02

标签: android mysql database listview onclick

我想从列表视图中单击删除数据库中的行! 我已经设置了所有内容,但是当我这样做时它要么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();
        }
    });
}

我哪里错了?

1 个答案:

答案 0 :(得分:0)

ArrayAdapter将位置返回为id。然后id与数据库上的KeyEntry.KEY_ID不匹配。

使用Database和ListView的最佳方法是使用CursorAdapter。在这种情况下,onItemClick Listener上的id参数将是数据库ID。 CursorAdapter需要更多的代码来实现,但它更灵活。