首页 > 解决方案 > 使用活动之间的先前数据重新加载 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();
            } );
}

谢谢

标签: javaandroidandroid-recyclerview

解决方案


一种选择是使用 Android 的Shared Preferences将这些数据保存在本地,并仅在您认为有必要时更新它,而不是每次打开应用程序时更新。


推荐阅读