带有recyclerviews的碎片需要很长时间才能加载

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了带有recyclerviews的碎片需要很长时间才能加载相关的知识,希望对你有一定的参考价值。

在我的应用程序中,有一个viewpager包含四个不同的选项卡。在每个选项卡中,嵌套ScrollView中有五个不同的片段,每个片段都会加载一个recyclerview。一切都加载但问题是当回收者视图附加大量数据时,数据需要很长时间才能加载。有时,加载需要10秒以上的时间,当有人需要等待很长时间时,它会非常恼人。请帮我解决这个问题。在每个选项卡中,下面提供的相同片段加载但具有不同的数据。

我的代码如下所示。

public class MyViewPagerFragment extends Fragment implements 
View.OnClickListener {

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

    View view = inflater.inflate(R.layout.my_fragment_layout, container, false);

            android.support.v4.app.FragmentManager manager = getChildFragmentManager();
            android.support.v4.app.FragmentTransaction transaction = manager.beginTransaction();
            BatsmanHelper.addNotBattedBatsmanFromPlayingXI(context, team, team.getBatsmans_list(), match);

            FragmentOneWithRecyclerView fragment1 = new FragmentOneWithRecyclerView();
            Bundle bundle1 = new Bundle();
            // put some data in the bundle
recyclerView.setArguments(bundle1);
            transaction.add(R.id.fragment1_container, 
fragment1).addToBackStack(null
            );

            FragmentTwoWithRecyclerView fragment2 = new 
FragmentTwoWithRecyclerView();
      bundle1 = new Bundle();
            // put some data in the bundle
fragment2.setArguments(bundle1);
            transaction.add(R.id.fragment2_container, 
fragment2).addToBackStack(null
            );

FragmentThreeWithRecyclerView fragment3 = new 
FragmentThreeWithRecyclerView();
            bundle1 = new Bundle();
            // put some data in the bundle
fragment3.setArguments(bundle1);
            transaction.add(R.id.fragment3_container, 
fragment3).addToBackStack(null
            );


FragmentFourWithRecyclerView fragment4 = new FragmentFourWithRecyclerView();
            bundle1 = new Bundle();
            // put some data in the bundle
fragment4.setArguments(bundle1);
            transaction.add(R.id.fragment4_container, 
fragment4).addToBackStack(null
            );

            transaction.commit();

    return view;
}


}
答案

也许有两个问题:

  1. 您的recyclerView中的项目可能需要很长时间才能加载。 (那你必须优化你的适配器)
  2. 而不是使用bundle,在哪个片段中构建一个这样的方法: public void setCustomData(Object data){ this.data = data ; }

然后只需使用fragment.setCustomData(yourStuffs);

以上是关于带有recyclerviews的碎片需要很长时间才能加载的主要内容,如果未能解决你的问题,请参考以下文章

带有 NOT IN 子查询的 SELECT INTO 查询需要很长时间/挂起

带有“选择 x 不为空”的 SQL Server 视图需要很长时间才能完成

如何隐藏应用状态栏

如何在 RecyclerView 中显示“重”图像?

个人项目

简单的选择需要很长时间才能执行