更新数据库后更新listView和Adapter

时间:2018-11-13 08:07:04

标签: android database android-studio listview sql-update

我有外部数据库,我必须使用更新`

的方法从活动中更新数据库
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();

2 个答案:

答案 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();