如何在更新數據庫sqlite上的行後更新listview中的項目。我已經把notifyDataSetChanged(),但不成功,沒有錯誤,但不刷新行中的數據。如果我再次單擊菜單並打開列表,數據將會更改。所以我想更新數據後更新行中的數據。在我的代碼結構下面,謝謝。在更新數據庫sqlite後更新列表視圖
CustomBaseAdapter adapter;
ListView cListView;
中的onCreate
:
cListView = (ListView) findViewById(R.id.list_category);
List<ItemsArtikel> rowItems = (List<ItemsArtikel>) db.getAllCategory(katname);
adapter = new CustomBaseAdapter(this, rowItems);
cListView.setAdapter(adapter);
查詢listcategory:
public List<ItemsArtikel> getAllCategory(String cat) {
SQLiteDatabase db = this.getWritableDatabase();
List<ItemsArtikel> cList = new ArrayList<ItemsArtikel>();
String selectQuery = "SELECT * FROM " + TABLE_CAT + " WHERE "
+ COLOM_KAT + "=\"" + cat + "\"";
Cursor c = db.rawQuery(selectQuery, null);
c.moveToFirst();
if (c.getCount() > 0) {
do {
ItemsArtikel kat = new ItemsArtikel();
kat.setID(c.getLong(c.getColumnIndex(COLOM_ID)));
kat.setName(c.getString(c.getColumnIndex(COLOM_NAME)));
kat.setLink(c.getString(c.getColumnIndex(COLOM_LINK)));
kat.setImage(c.getString(c.getColumnIndex(COLOM_IMAGE)));
kategoriList.add(kat);
} while (c.moveToNext());
}
return cList;
}
後,我使用列表視圖呈現for
下載圖片,並在下載圖像使用的AsyncTask更新每一行的數據庫。下載圖像成功和行更新成功,只是不刷新在列表視圖。
這是代碼onPostExecute時下載圖片:
@Override
protected void onPostExecute(HashMap<String, Object> result) {
String id = (String) result.get("id");
String path = (String) result.get("image");
// update row in database
db.updateRowCategory(id, path);
cListView.setAdapter(adapter);
adapter.notifyDataSetChanged();
}
您好Animesh,感謝您的回覆。我已經更新了我的帖子,所以如何使用onContentChanged(),如果我可以使用上面的查詢。 – 2013-02-14 03:50:01