java - 使用活动之间的先前数据重新加载 recyclerView
问题描述
我创建了一个包含排行榜的应用程序。
排行榜由 3 个类别组成:排名最高、分享最多、信息最多。
在每个类别(选项卡)中,都有一个 recyclerView 加载 25 个结果,每个来自firestore
.
发生的情况是,每次用户打开此活动时,它都会读取 75 个文档,这几乎是我试图避免的。
有没有什么办法让用户第一次启动活动时会加载这 75 个文档,但如果他在 5 分钟后启动活动,例如,它将只显示与以前相同的结果,而无需firestore
再次读取 75 个文档?
每个 recyclerView 使用以下方法加载:
RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager( getApplicationContext() );
rv_TopRank.setLayoutManager( mLayoutManager );
rv_TopRank.setItemAnimator( new DefaultItemAnimator() );
private void showTopRanked() {
usersID.clear();
usersName.clear();
usersResult.clear();
db.collectionGroup( "UserData" ).orderBy( "rank", Query.Direction.DESCENDING ).limit( AppConstants.LEADERBOARD_TO_LOAD ).get()
.addOnSuccessListener( queryDocumentSnapshots -> {
for (QueryDocumentSnapshot document : queryDocumentSnapshots) {
if (document != null) {
usersID.add( document.getId() );
usersName.add( document.getString( "username" ) );
usersResult.add( document.getDouble( "rank" ) );
}
}
leaderBoardAdapter = new LeaderBoardAdapter( usersID, usersName, usersResult, 0 );
rv_TopRank.setAdapter( leaderBoardAdapter );
leaderBoardAdapter.notifyDataSetChanged();
} );
}
谢谢
解决方案
一种选择是使用 Android 的Shared Preferences将这些数据保存在本地,并仅在您认为有必要时更新它,而不是每次打开应用程序时更新。