RecyclerView 正在同时为所有项目创建 ViewHolder
RecyclerView is creating ViewHolders for all items at once
我有包含其他 RecyclerView 的主 RecyclerView(我们称它们为 subRecyclerView)。 subRecyclerViews 的数量基于从服务器接收到的数据。问题是,每当 subRecyclerView 即将变为可见时,它会立即为其所有项目创建 ViewHolder(而不是仅为可见项目创建 ViewHolder)。
在我的 MainRecyclerViewAdapter onBindViewHolder() 方法中调用
subRecyclerViewAdapter.setData(data);
subRecyclerView.notifyDataSetChanged();
这会导致延迟,因为 subRecyclerView 正在为其所有项目调用 onCreateViewHolder() 和 onBindViewHolder() 方法。
我使用的RecyclerView版本是
com.android.support:recyclerview-v7:25.1.1
问题是,有没有办法告诉 subRecyclerView 它不需要为尚不可见的项目创建 ViewHolder?另外,这是 RecyclerView 中的错误还是我做错了什么?
最近的一个解决方案是使用一个带有 ConcatAdapter
的 recyclerView 而不是 'subRecyclerViews'
val firstAdapter: FirstAdapter
val secondAdapter: SecondAdapter
val thirdAdapter: ThirdAdapter
val concatAdapter = ConcatAdapter(firstAdapter, secondAdapter,
thirdAdapter)
recyclerView.adapter = concatAdapter
我有包含其他 RecyclerView 的主 RecyclerView(我们称它们为 subRecyclerView)。 subRecyclerViews 的数量基于从服务器接收到的数据。问题是,每当 subRecyclerView 即将变为可见时,它会立即为其所有项目创建 ViewHolder(而不是仅为可见项目创建 ViewHolder)。
在我的 MainRecyclerViewAdapter onBindViewHolder() 方法中调用
subRecyclerViewAdapter.setData(data);
subRecyclerView.notifyDataSetChanged();
这会导致延迟,因为 subRecyclerView 正在为其所有项目调用 onCreateViewHolder() 和 onBindViewHolder() 方法。
我使用的RecyclerView版本是
com.android.support:recyclerview-v7:25.1.1
问题是,有没有办法告诉 subRecyclerView 它不需要为尚不可见的项目创建 ViewHolder?另外,这是 RecyclerView 中的错误还是我做错了什么?
最近的一个解决方案是使用一个带有 ConcatAdapter
的 recyclerView 而不是 'subRecyclerViews'val firstAdapter: FirstAdapter
val secondAdapter: SecondAdapter
val thirdAdapter: ThirdAdapter
val concatAdapter = ConcatAdapter(firstAdapter, secondAdapter,
thirdAdapter)
recyclerView.adapter = concatAdapter