我一直在搜索和搜索没有运气,这是我的代码
// 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将是SQLLite ID列,但它是相同的值在数组中的位置。
这是我的DatabaseHelper类中的delete函数
public void deleteProduct(long ID)
{
SQLiteDatabase productsdb = this.getWritableDatabase();
productsdb.execSQL("DELETE FROM "+ PRODTABLE_NAME +" WHERE ID = "+ ID);
}
谁能透露任何关于如何获得数据库ID值请。
Long是所单击项的行id,而不是DB中产品的id。
在DBHelper类中创建一个返回ID
的方法,参数String productName
Edit onItemLongClick()
@Override
public boolean onItemLongClick(AdapterView<?> arg0, View arg1, int pos, long id) {
TextView prdName = arg1.findViewById(R.id.textView_prdname);
// now call the method which take productName as parameter and return productId
int prdID = productDB.getProductID(prdName.getText().toString());
// Now Pass that ID to deleteProduct
productDB.deleteProduct(prdID);
Toast.makeText(medicineList.this, "Item Deleted", Toast.LENGTH_LONG).show();
finish();
startActivity(getIntent());
return true;
}
如果名称是唯一的,而不是DELETE FROM table WHERE ID = id
,您可以使用DELETE FROM table WHERE NAME = name
这里的名称可以从prdName.getText()
得到,这样你只需要执行一个查询。