android studio-如何在活动中放置多个recyclerviews并使屏幕可滚动?

jv2fixgn  于 2021-07-12  发布在  Java
关注(0)|答案(2)|浏览(316)

我想向活动添加多个回收器视图,但屏幕上没有足够的空间。我怎样才能使屏幕滚动,这样我就有更多的空间添加回收视图?

f2uvfpb9

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>

注意:根据需要更改回收器视图的高度。有什么不清楚的尽管问

jtw3ybtb

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
}

当然,您可以根据需要添加不同的类型

相关问题