更新数据库后更新 listView 和 Adapter
Posted
技术标签:
【中文标题】更新数据库后更新 listView 和 Adapter【英文标题】:Update listView and Adapter after update Database 【发布时间】:2019-04-16 00:23:26 【问题描述】:我有外部数据库,我必须使用更新方法从活动更新数据库`
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();
【问题讨论】:
【参考方案1】:首先我推荐使用 RecyclerView 而不是 ListView。 其次,您可以从 onCreate() 和 onResume() 回调中删除更新方法,只需将更新项目设置为 RecyclerView 适配器和 notifyDataSetChanged。在数据库更新后使用数据库中的 getter 来更新 RecyclerView 项。
RecyclerView 文档:https://developer.android.com/guide/topics/ui/layout/recyclerview
【讨论】:
【参考方案2】:更新数据库后,通过添加新值或清除列表来更新列表并从数据库中获取值到列表中。然后给adapterListView.notifyDataSetChanged();
【讨论】:
以上是关于更新数据库后更新 listView 和 Adapter的主要内容,如果未能解决你的问题,请参考以下文章