Android 将记录插入数据库后如何更新listview?
我在向数据库插入记录后更新listview时遇到问题 创建后,我将数据从数据库加载到listview,如下所示:Android 将记录插入数据库后如何更新listview?,android,sqlite,listview,sql-update,Android,Sqlite,Listview,Sql Update,我在向数据库插入记录后更新listview时遇到问题 创建后,我将数据从数据库加载到listview,如下所示: Cursor c = db.getAllCategory(); List<String> l = db.getItemByFilteredCategory(); //add total goals that match with each category if (c.moveToFirst()) { do {
Cursor c = db.getAllCategory();
List<String> l = db.getItemByFilteredCategory();
//add total goals that match with each category
if (c.moveToFirst()) {
do {
int totalGoals = db.getMyGoalByCat(c.getInt(0)).getCount();
db.updateCategory(c.getInt(0), c.getString(1), c.getString(2), totalGoals);
} while (c.moveToNext());
}
//update category list
c = db.getAllCategory();
//add items to list
ListAdapter adapter = new SimpleCursorAdapter(this,
R.layout.custom_categorylist,
c,
new String[]{"_id", "categoryName", "categoryDescription", "totalGoals"},
new int[]{R.id.customViewCatId, R.id.customViewCategory, R.id.customViewCatDescription, R.id.customViewTargetNumber});
lv.setAdapter(adapter);
此时,我将回到listview的主要活动。如何在此步骤中获取listview更新
干杯,要更新列表中的数据,您必须调用适配器。notifyDataSetChanged()如果onClickListener在onCreate中
btnCreate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
DBAdapter dbSub = new DBAdapter(getApplicationContext());
dbSub.openDB();
dbSub.insertCategory(etCatName.getText().toString(),etCatDescription.getText().toString(), 0);
dbSub.closeDB();
adapter.notifyDataSetChanged();
dialog.dismiss();
}
});
除非
btnCreate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
DBAdapter dbSub = new DBAdapter(getApplicationContext());
dbSub.openDB();
dbSub.insertCategory(etCatName.getText().toString(),etCatDescription.getText().toString(), 0);
dbSub.closeDB();
lv.getAdapter().notifyDataSetChanged();
dialog.dismiss();
}
});
希望这能有所帮助。插入数据库后,尝试适配器.notifyDataSetChanged()。当用于填充列表的基础数组或等效类对象引用被修改时,notifyDataSet可以工作。仅仅通过调用notify是没有帮助的。我需要声明适配器对象吗?我真的不明白。什么是适配器?lv.setAdapter(适配器);此适配器位于支架内。检查您的代码。是,但我找不到notifyDataSetChanged方法?这是因为我在onCreate方法中声明了适配器,然后在对话框中调用它吗?是的,全局声明适配器并调用它。对于这一点,您仍然想知道为什么他们找不到notifyDataSetChanged方法,您需要将适配器强制转换为customAdapter。e、 g.
((MyListAdapter)listview.getAdapter()).notifyDataSetChanged()代码>
btnCreate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
DBAdapter dbSub = new DBAdapter(getApplicationContext());
dbSub.openDB();
dbSub.insertCategory(etCatName.getText().toString(),etCatDescription.getText().toString(), 0);
dbSub.closeDB();
lv.getAdapter().notifyDataSetChanged();
dialog.dismiss();
}
});