我想向活动添加多个回收器视图,但屏幕上没有足够的空间。我怎样才能使屏幕滚动,这样我就有更多的空间添加回收视图?
f2uvfpb91#
<androidx.core.widget.NestedScrollView android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <androidx.recyclerview.widget.RecyclerView android:layout_width="match_parent" android:layout_height="300dp"/> <androidx.recyclerview.widget.RecyclerView android:layout_width="match_parent" android:layout_height="300dp"/> <androidx.recyclerview.widget.RecyclerView android:layout_width="match_parent" android:layout_height="300dp"/> </LinearLayout> </androidx.core.widget.NestedScrollView>
注意:根据需要更改回收器视图的高度。有什么不清楚的尽管问
jtw3ybtb2#
如果你想一个接一个地打开两个recyclerviews,我强烈建议你只使用一个不同的viewholder,这取决于你想显示什么。
enum class ContentType(val adapterTypeId: Int) { TYPE_ONE(AdapterTypeId.ADAPTER_TYPE_ONE), TYPE_TWO(AdapterTypeId.ADAPTER_TYPE_TWO); companion object { fun getTypeFromAdapterTypeId(adapterId: Int) = when (adapterId) { AdapterTypeId.ADAPTER_TYPE_ONE -> TYPE_ONE AdapterTypeId.ADAPTER_TYPE_TWO -> TYPE_TWO else -> throw RuntimeException("Unknown Content type") } } private object AdapterTypeId { const val ADAPTER_TYPE_ONE = 0 const val ADAPTER_TYPE_TWO = 1 } }
创建一个密封类,该类将是所有项目将从中扩展的基类:
sealed class GalleryContent(val contentType: ContentType)
然后在适配器中:
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { return when (ContentType.getTypeFromAdapterTypeId(viewType)) { ContentType.TYPE_ONE -> // Bind proper ViewHolder ContentType.TYPE_TWO -> // Bind proper ViewHolder } } override fun getItemViewType(position: Int): Int { val item = itemList[position] return item.contentType.adapterTypeId }
当然,您可以根据需要添加不同的类型
2条答案
按热度按时间f2uvfpb91#
你的解决方案在这里
注意:根据需要更改回收器视图的高度。有什么不清楚的尽管问
jtw3ybtb2#
如果你想一个接一个地打开两个recyclerviews,我强烈建议你只使用一个不同的viewholder,这取决于你想显示什么。
创建一个密封类,该类将是所有项目将从中扩展的基类:
然后在适配器中:
当然,您可以根据需要添加不同的类型