我正在顯示從Android OS sqlite數據庫中提取的數據。當我點擊它們時,我正在成功獲取要刪除的項目。但是,我有一個問題刷新,或在操作後更新列表視圖。刪除操作後更新ListView
下面是我刪除聯繫人的代碼。
deleteBtn = (Button)v.findViewById(R.id.deleteBtn);
deleteBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(v.getContext(), "Deleted: " + c.getId() + " " + c.getName(), Toast.LENGTH_SHORT).show();
adapter.deleteContact(c.getId());
updateList();
}
});
下面是updateList()方法:
public void updateList(){
myList.refreshDrawableState();
myList.invalidateViews();
this.notifyDataSetChanged();
}
我包括在該方法的所有三種方式我試圖刷新,但沒有爲我工作。任何想法我可能如何實現這一點?
編輯:我改變了我的代碼,認爲這將是解決辦法,但它沒有工作,要麼:
將對DBAdapter類中刪除()的方法:
public boolean deleteContact(int rowId){
getAllContactsList();
return db.delete(DB_TABLE, COLUMN_ID + "=" + rowId, null) > 0;
}
getAllContactsList():
public List<Contact> getAllContactsList(){
List<Contact> contactList = new ArrayList();
Cursor c = db.query(DB_TABLE, new String [] {COLUMN_ID, COLUMN_FNAME, COLUMN_LNAME}, null, null, null, null, null);
//loop through cursor rows and add to list
if(c.moveToFirst()){
do{
Contact contact = new Contact();
contact.setId(Integer.parseInt(c.getString(0)));
contact.setfName(c.getString(1));
contact.setlName(c.getString(2));
contactList.add(contact);
}while(c.moveToNext());
}
return contactList;
}public List<Contact> getAllContactsList(){
List<Contact> contactList = new ArrayList();
Cursor c = db.query(DB_TABLE, new String [] {COLUMN_ID, COLUMN_FNAME, COLUMN_LNAME}, null, null, null, null, null);
//loop through cursor rows and add to list
if(c.moveToFirst()){
do{
Contact contact = new Contact();
contact.setId(Integer.parseInt(c.getString(0)));
contact.setfName(c.getString(1));
contact.setlName(c.getString(2));
contactList.add(contact);
}while(c.moveToNext());
}
return contactList;
}
我想通過在刪除聯繫人之前獲取新的光標它會相應地更新列表。不幸的是它沒有任何區別。有任何想法嗎 ?
我正在用'this.notifyDataSetChanged()'來做這件事,但是出於某種原因它沒有對列表做任何改變! – Javacadabra