更新数据库后更新 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的主要内容,如果未能解决你的问题,请参考以下文章

Android:线程从网络加载数据后更新Listview

Android - 数据重新排序后 ListView 不更新

winform。 listview 更新数据后刷新

android数据库更新后怎样刷新listview数据

在 Json 数据中更新后未显示 ListView

在Android中将新数据添加到数据库后更新listview