RecyclerView一次为所有项目创建ViewHolders

时间:2017-02-03 17:00:11

标签: android android-recyclerview android-viewholder

我有主要的RecyclerView,其中包含其他RecyclerViews(让他们称之为subRecyclerViews)。 subRecyclerViews的数量基于从服务器接收的数据。问题是,每当subRecyclerView即将变为可见时,它会立即为其所有项创建ViewHolders(而不是仅为可见项创建ViewHolders)。

在我的MainRecyclerViewAdapter onBindViewHolder()方法中,我调用

subRecyclerViewAdapter.setData(data);
subRecyclerView.notifyDataSetChanged();

导致延迟,因为subRecyclerView正在为其所有项调用onCreateViewHolder()和onBindViewHolder()方法。

我使用的RecyclerView版本是

com.android.support:recyclerview-v7:25.1.1

问题是,有没有办法告诉subRecyclerView它不需要为那些尚未显示的项目创建ViewHolders?此外,这是RecyclerView中的错误还是我做错了什么?

1 个答案:

答案 0 :(得分:1)

如今,一种解决方案代替使用'subRecyclerViews',而是使用一个带有ConcatAdapter

的recyclerView
val firstAdapter: FirstAdapter
val secondAdapter: SecondAdapter
val thirdAdapter: ThirdAdapter
val concatAdapter = ConcatAdapter(firstAdapter, secondAdapter, 
     thirdAdapter)
recyclerView.adapter = concatAdapter