我有外部数据库,我必须使用更新`
的方法从活动中更新数据库public long updateInfo(ModelInsertInfo modelInsertInfo)
{
SQLiteDatabase db = getWritableDatabase();
ContentValues values = new ContentValues();
values.put(KEY_ID,modelInsertInfo.getId());
values.put(KEY_yearWater, modelInsertInfo.getYearWater());
values.put(KEY_MonthWater, modelInsertInfo.getMonthWater());
values.put(KEY_DayWater, modelInsertInfo.getDayWater());
values.put(KEY_HourWater, modelInsertInfo.getHourWater());
values.put(KEY_MinWater, modelInsertInfo.getMinWater());
return db.update(TABLE_Insert_Info, values, "" + KEY_ID + "= " +
modelInsertInfo.getId() + "", null);
}
数据库已更新,但列表或活动没有任何变化。
我的内部活动通过点击listview
项目获得ID,而我从内部活动更新了数据库。
我用了
@Override
protected void onResume()
{
super.onResume();
adapterListView.notifyDataSetChanged();
listView.deferNotifyDataSetChanged();
listView.invalidateViews();
clearPref();
}
这在onCreate()
adapterListView.notifyDataSetChanged();
adapterListView.notifyDataSetInvalidated();
listView.invalidateViews();
答案 0 :(得分:0)
首先,我建议使用RecyclerView而不是ListView。 其次,您可以从onCreate()和onResume()回调中删除更新方法,只需将更新项设置为RecyclerView适配器和notifyDataSetChanged。数据库更新后,使用databese中的getter来更新RecyclerView项。
RecyclerView文档:https://developer.android.com/guide/topics/ui/layout/recyclerview
答案 1 :(得分:0)
更新数据库后,要么通过添加新值来更新列表,要么清除列表,然后从数据库中获取值到列表。然后给adapterListView.notifyDataSetChanged();