我試過了從列表視圖中刪除記錄的多項方法,只需點擊項目,但沒有任何反應,沒有錯誤,沒有刪除任何東西,只是吐司顯示了.. 。 下面是代碼:Android:無法從ListView和SQLite中刪除記錄
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
overridePendingTransition(R.layout.push_left_in, R.layout.push_left_out);
setContentView(R.layout.moje_ure);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
datasource = new VnosiDataSource(this);
datasource.open();
final List<VnosiDB> values = datasource.getAllDela();
final ArrayAdapter<VnosiDB> adapter = new ArrayAdapter<VnosiDB>(this,
android.R.layout.simple_list_item_1, values);
setListAdapter(adapter);
ListView ureList = getListView();
adapter.notifyDataSetChanged();
ureList.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View view, int pos,
long id) {
// TODO Auto-generated method stub
//some code here...
String posit = values.get(pos).toString();
Toast.makeText(Ure.this, posit, Toast.LENGTH_SHORT).show();
}
});
ureList.setOnItemLongClickListener(new OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> arg0, View view,
int pos, long id) {
// TODO Auto-generated method stub
datasource.deleteVnos((int)values.get(pos).getId());
Toast.makeText(Ure.this, "Vnos " + values.get(pos).toString() + " izbrisan!", Toast.LENGTH_SHORT).show();
adapter.notifyDataSetChanged();
return true;
}
});
以及數據庫的刪除方法:
public void deleteVnos(int _id){
database.delete(DatabaseManidzer.TABLE_VNOSI, DatabaseManidzer.COLUMN_ID + " = " + _id, null);
}
public void open() throws SQLException {
database = dbHelper.getWritableDatabase();
}
UPDATE:
:用於填充類VnosiDataSource.java列表視圖方法我錯過了什麼?
謝謝,但它仍然無法工作...和以前一樣:我得到祝酒,但沒有任何反應的列表視圖或數據庫... – belosand
'DatabaseManidzer.COLUMN_ID =「_id」'? – DroidT
我更新了我的答案,其中應該解決您的問題的deleteVnos方法。唯一可能錯誤的是表名,或者當您試圖刪除它時,數據庫中沒有該項的內容。如果此解決方案不起作用,則作爲測試,請嘗試在刪除該項目之前查詢該項目的數據庫,以確保其位於該位置,並且可以通過該ID訪問該項目。 – DroidT