一张一张地使用两个Recycler View列表项布局

如何为RecyclerView一一使用两个View。这是我正在使用的代码:

适配器代码以获取布局:

public tagsfeatures onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
    View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.my_item_layout,parent,false);
    return new my_item_layout(view);
}

查看XML

  <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginRight="20dp"
        android:layout_marginLeft="20dp"
        android:layout_marginTop="10dp"
        android:orientation="horizontal"
        android:background="@drawable/noti_bg_item"
        >
        <ImageView
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:id="@+id/tag_features_img"
            android:layout_margin="10dp"
            ></ImageView>
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            >
            <TextView
                android:id="@+id/tag_features_title"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:fontFamily="@font/roboto"
                android:text="Awesome Title"
                android:textSize="17sp"
                android:layout_marginTop="10dp"
                app:fontFamily="@font/roboto"></TextView>
            <TextView
                android:id="@+id/tag_features_desc"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:fontFamily="@font/roboto"
                android:layout_marginTop="10dp"
                android:text="I'm the description text here"
                android:textSize="12sp"
                app:fontFamily="@font/roboto"></TextView>
        </LinearLayout>
    </LinearLayout>

布局成功显示,并且项目显示在回收者视图中。现在,我需要以不同的方式显示项目。

比方说:

//recyclerview
Item0// Image here, Title, Description //Item0
Item1// Title, Description, Image //Item1
Item2// Image here, Title, Description //Item2
Item3// Title, Description, Image //Item3
//recycler view

我可以为回收者视图项目创建两个布局,以不同方式显示内容。但目前,我无法一一使用一种布局来循环项目。

评论
  • tut
    tut 回复

    在您的recyclerview适配器中重写getItemViewType函数

    override fun getItemViewType(position: Int): Int {
                return when(dataList.get(position).type) {
                    "typeOne" -> 0;
                    "typeTwo" -> 1;
                    else -> 2
                }
            }
    

    从此函数返回的类型将传递给onCreateViewHolder函数。根据viewType可以加载不同的布局文件