recyclerview 内的 RecyclerView 只显示父 recyclerview 的最后一项

Posted

技术标签:

【中文标题】recyclerview 内的 RecyclerView 只显示父 recyclerview 的最后一项【英文标题】:RecyclerView inside recyclerview shows only last items of parent recyclerview 【发布时间】:2021-01-09 00:38:34 【问题描述】:

我在父recyclerview中有一个子recyclerview。只有父recyclerview的最后一项显示子recyclerview。为了更好地理解看图片click here to see image

在适配器类中,我已经使用了 customlayoutmanager,但没有一个解决方案可以解决我的问题。内部适配器 OnBindViewHolder 方法 java 代码

        holder.replyRecyclerView.setHasFixedSize(true);
    RecyclerView.LayoutManager layoutManager = new CustomLinearLayoutManager(mContext);
    holder.replyRecyclerView.setLayoutManager(layoutManager);
    layoutManager.isAutoMeasureEnabled();
    commentReplyList = new ArrayList<>();
    commentReplayAdapter = new CommentReplyAdapter(mContext,commentReplyList);
    holder.replyRecyclerView.setAdapter(commentReplayAdapter);
    readCommentReply(comment.getCommentId(),holder.viewRepliesTV);

我的 parent_layout_item xml 文件

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_
android:layout_
android:layout_marginBottom="8dp">

<de.hdodenhof.circleimageview.CircleImageView
    android:id="@+id/commentImageProfile"
    android:layout_
    android:layout_
    android:layout_alignParentStart="true"
    android:layout_marginStart="12dp"
    android:layout_marginTop="5dp"
    android:contentDescription="@string/image" />

<LinearLayout
    android:layout_
    android:layout_
    android:layout_toEndOf="@id/commentImageProfile"
    android:orientation="vertical">

    <LinearLayout
        android:id="@+id/commentLayout"
        android:layout_
        android:layout_
        android:layout_gravity="center_vertical"
        android:layout_marginStart="8dp"
        android:orientation="vertical"
        android:paddingStart="2dp"
        android:paddingTop="4dp"
        android:paddingEnd="4dp"
        android:paddingBottom="2dp">

        <TextView
            android:id="@+id/commentUserName"
            android:layout_
            android:layout_
            android:layout_marginEnd="5dp"
            android:textSize="13sp" />

        <LinearLayout
            android:layout_
            android:layout_
            android:layout_marginTop="4dp"
            android:orientation="horizontal">

            <LinearLayout
                android:layout_
                android:layout_
                android:layout_gravity="center_vertical"
                android:layout_weight="1"
                android:orientation="horizontal">

                <ImageView
                    android:id="@+id/commentReaction"
                    android:layout_
                    android:layout_
                    android:layout_marginEnd="4dp"
                    android:background="@drawable/ic_comment_love" />

                <TextView
                    android:id="@+id/commentLoves"
                    android:layout_
                    android:layout_
                    android:layout_gravity="center_vertical"
                    android:textSize="12sp" />

            </LinearLayout>

            <TextView
                android:id="@+id/replyTV"
                android:layout_
                android:layout_
                android:layout_gravity="center_vertical"
                android:layout_weight="1"
                android:text="Reply"
                android:textSize="12sp" />

            <TextView
                android:id="@+id/commentTime"
                android:layout_
                android:layout_
                android:layout_gravity="center_vertical"
                android:layout_marginEnd="12dp"
                android:layout_weight="1"
                android:gravity="end"
                android:text="1d"
                android:textSize="12sp" />

        </LinearLayout>

        <RelativeLayout
            android:id="@+id/replyView"
            android:layout_
            android:layout_
            android:visibility="gone">

            <EditText
                android:id="@+id/sendReplyET"
                android:layout_
                android:layout_
                android:layout_marginEnd="5dp"
                android:background="@drawable/comment_reply_background"
                android:inputType="textMultiLine"
                android:padding="8dp"
                android:paddingStart="8dp"
                android:paddingEnd="35dp"
                android:textSize="13sp" />

            <ImageView
                android:id="@+id/sendReply"
                android:layout_
                android:layout_
                android:layout_alignParentEnd="true"
                android:layout_marginEnd="5dp"
                android:padding="5dp"
                android:src="@drawable/ic_send_reply_twenty_padding" />

        </RelativeLayout>

    </LinearLayout>

    <TextView
        android:id="@+id/viewRepliesTV"
        android:layout_
        android:layout_
        android:layout_marginStart="50dp"
        android:layout_marginTop="6dp"
        android:textSize="12sp"
        android:visibility="gone" />

    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/replyRecyclerView"
        android:layout_
        android:layout_
        android:layout_marginTop="4dp"
        android:paddingStart="40dp"
        android:paddingEnd="1dp" />

</LinearLayout>

【问题讨论】:

【参考方案1】:

我建议使用this 库。您可以拥有多级 RecyclerViews。 Here is a preview of the result.

【讨论】:

以上是关于recyclerview 内的 RecyclerView 只显示父 recyclerview 的最后一项的主要内容,如果未能解决你的问题,请参考以下文章

RecyclerView源码分析

RecyclerView的Item的单击事件

滚动到recyclerView中第一个完全可见的项目

在垂直 recyclerView 中带有 wrap_content 的水平 recyclerView

带有 GridLayoutManager 和 Picasso 的 RecyclerView 显示错误的图像

安卓APP_ 布局(8) —— 基于 RecyclerView 的 ViewPager2翻页