【发布时间】:2016-09-04 07:43:28
【问题描述】:
我一直在寻找和寻找没有运气,这是我的代码
// Product List
public void setProductList() {
productDB = new DatabaseHelper(this);
listView = (ListView) findViewById(R.id.list);
listAdapter = listView.getAdapter();
Cursor prodView = productDB.getAllData();
prodView.moveToFirst();
ArrayAdapter<String> listAdaptor = new ArrayAdapter<String>(this, R.layout.medicinelistmenu, R.id.productlistsTextView1);
while (prodView.moveToNext()) {
listAdaptor.add(prodView.getString(1));
}
listView.setAdapter(listAdaptor);
listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> arg0, View arg1, int pos, long id) {
productDB.deleteProduct(id);
Toast.makeText(medicineList.this, "Item Deleted", Toast.LENGTH_LONG).show();
finish();
startActivity(getIntent());
return true;
}
});
}
使用 onItemLongClick 函数,其他帖子告诉我 AdapterView 中的 long 值将是 SQLLite ID 列,但它与数组中的位置值相同。
这是我的 DatabaseHelper 类中的删除函数
public void deleteProduct(long ID)
{
SQLiteDatabase productsdb = this.getWritableDatabase();
productsdb.execSQL("DELETE FROM "+ PRODTABLE_NAME +" WHERE ID = "+ ID);
}
任何人都可以阐明如何获取数据库 ID 值。
【问题讨论】:
-
不要使用
ArrayAdapter,而是使用CursorAdapter,很可能是SimpleCursorAdapter -
好的,谢谢,我试试看。
-
如果你使用
SimpleCursorAdapteronItemLongClick(AdapterView<?> arg0, View arg1, int pos, long id)的最后一个参数是一个数据库ID
标签: java android sqlite android-studio