如何在整个活动生命周期中将数据正确保存在listview项内?

时间:2018-12-25 16:57:34

标签: android listview android-lifecycle listitem

我创建了一个列表视图,该列表视图显示MainActivity中本地SQLite数据库的每日报价(一个带有4个包含文本数据的textview的listVite项)。每天在特定时间通过警报管理器和广播接收器进行更新。我需要在所有类型的生命周期更改中保留列表视图中的(4)textViews中的文本。如果用户a,我需要将其保留。旋转屏幕b。强制关闭应用程序,并在指定时间之前返回该应用程序,以使用不同的引号重新填充c。导航到其他活动,然后返回MainActivity ...等。

我已经阅读了其他帖子,即使某些标题似乎问了这个问题,实际的帖子似乎也有所不同。有任何想法吗?非常感谢。

我尝试使用以下代码保存实例状态:(无效)

 mState = mDailyVerseListView.onSaveInstanceState();
 mDailyVerseListView.onRestoreInstanceState(mState);

这是我从SQLite数据库获取每日报价的方法:

public void DailyQuoteDatabaseAccess(){

SQLiteOpenHelper sqLiteOpenHelper = new SQLiteAssetHelper(this, 
DATABASE_NAME, null, DATABASE_VERSION);
SQLiteDatabase SqlDb = sqLiteOpenHelper.getReadableDatabase();
String rawQuery = "SELECT * FROM dailyQuoteTable ORDER BY RANDOM() LIMIT 
1";
Cursor cursor = SqlDb.rawQuery(rawQuery, null);
DailyQuoteCursorAdapter DQCursorAdapter = new DailyQuoteCursorAdapter(this, 
cursor);
this.mDailyQuoteListView.setAdapter(DQCursorAdapter);
}

1 个答案:

答案 0 :(得分:1)

  

如果用户a,我需要将其保留。旋转屏幕b。 力   关闭应用程序,并在指定时间之前返回到   重新填充不同的报价c。导航到另一个   活动,然后返回MainActivity

     

我创建了一个显示每日报价的列表视图(一个listVite   项目,其中4个包含文本数据的textviews )来自本地SQLite   MainActivity中的数据库。

因为您需要在强制关闭后保留数据,并且您的数据是四个字符串。最好使用SharedPreferences保存和检索数据。

当您从SQLite读取数据时,将其保存在SharedPreferences中,而在onResume的Activity中,则将SharedPreferences中的数据也设置为该SharedPreference的侦听器(在阅读后)在onResume中删除,然后从SharedPreference的{​​{1}}侦听器中删除“活动”