Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 寻找改善RecyclerView性能的方法_Java_Android_Adapter_Android Recyclerview_Lag - Fatal编程技术网

Java 寻找改善RecyclerView性能的方法

Java 寻找改善RecyclerView性能的方法,java,android,adapter,android-recyclerview,lag,Java,Android,Adapter,Android Recyclerview,Lag,我有一个相当复杂的视图,在一个RecyclerView中有许多移动部件,带有一个适配器,它负责显示两种不同的视图类型,并从列表中“隐藏”对象,以便创建“折叠”注释。代码运行正常,显示良好,但向下或向上运行时会变得非常滞后,我真的找不到简化代码和/或视图的方法。这里是所有代码和视图的链接 Comment.xml(视图) 如你所见,这是一个相当复杂的视图,有3个主要部分。顶部的“评论”区域始终可见,菜单的可见性可以切换,回复区域的可见性很少使用,但仍然可以切换 (可能会有帮助!) 我希望这个

我有一个相当复杂的视图,在一个RecyclerView中有许多移动部件,带有一个适配器,它负责显示两种不同的视图类型,并从列表中“隐藏”对象,以便创建“折叠”注释。代码运行正常,显示良好,但向下或向上运行时会变得非常滞后,我真的找不到简化代码和/或视图的方法。这里是所有代码和视图的链接

Comment.xml(视图)


如你所见,这是一个相当复杂的视图,有3个主要部分。顶部的“评论”区域始终可见,菜单的可见性可以切换,回复区域的可见性很少使用,但仍然可以切换

(可能会有帮助!)

我希望这个问题有点简单,但我真的不知道如何使代码更简单

我采取了以下步骤来修复滞后: 删除注释适配器中的所有代码,仍然存在明显的延迟 从视图中删除菜单和回复区域,虽然有所改进,但仍然很慢

非常感谢您的任何帮助/建议!谢谢大家!


编辑:这里有一段有问题的滞后视频

我认为您需要简化所有嵌套的线性布局。。可以使用relativelayout或gridview。可能有一个自定义的图像集视图…嗯,很有趣。我没想到用相对论来代替!是的,这是一个相当复杂的视图层次结构。我猜FlowLayout不做任何视图缓存(就像适配器实现做的那样),所以所有这些子级重新定位都是在scrollsInteresting上不断发生的。我将尝试将它们改为recyclerviews,看看我的帧速率如何!
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"

    android:layout_height="wrap_content"

    android:clipChildren="false"


    android:orientation="vertical"

    android:scrollbars="none">

    <LinearLayout
        android:id="@+id/next"
        android:layout_width="match_parent"
        android:layout_height="2dp"
        android:layout_marginBottom="8dp"
        android:elevation="8dp"
        android:orientation="horizontal" />

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/top"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="?attr/card_background"
        android:clipChildren="false"
        android:orientation="vertical"
        android:paddingBottom="0dp"
        android:scrollbars="none">


            <LinearLayout
                android:id="@+id/padd"

                android:layout_width="match_parent"
                android:layout_height="wrap_content"


                android:orientation="horizontal"
                android:paddingBottom="0dp"
                android:scrollbars="none">



                    <LinearLayout
                        android:id="@+id/dots"
                        android:layout_width="wrap_content"
                        android:layout_height="match_parent"
                        android:background="?attr/activity_background"
                        android:orientation="horizontal">


                    </LinearLayout>

                    <include
                        android:id="@+id/dot"
                        layout="@layout/dot" />


                <include
                    android:id="@+id/side"
                    layout="@layout/dot"
                    android:layout_width="wrap_content"

                    android:layout_height="match_parent"
                    android:paddingRight="15dp" />


                <LinearLayout
                    android:id="@+id/background"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:orientation="vertical"
                    android:paddingLeft="16dp"
                    android:paddingRight="16dp"

                    android:paddingTop="8dp"

                    >


                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:orientation="vertical">

                        <RelativeLayout
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"

                            >

                            <include
                                android:id="@+id/children"
                                layout="@layout/commentnumber"
                                android:layout_width="wrap_content"

                                android:layout_height="16dp"
                                android:layout_alignParentRight="true"
                                android:layout_marginLeft="10dp"
                                android:gravity="center_horizontal"
                                android:orientation="horizontal" />


                            <com.wefika.flowlayout.FlowLayout
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:layout_gravity="center_vertical"
                                android:gravity="center_vertical"
                                android:orientation="horizontal"
                                android:paddingRight="10dp">

                                <TextView
                                    android:id="@+id/author"
                                    android:layout_width="wrap_content"
                                    android:layout_height="16dp"
                                    android:layout_gravity="center_vertical"

                                    android:paddingLeft="5dp"
                                    android:paddingRight="5dp"
                                    android:text="ccrama"

                                    android:textColor="?attr/font"
                                    android:textSize="?attr/font_commenttitle"
                                    android:textStyle="bold"

                                    />

                                <TextView
                                    android:id="@+id/score"
                                    android:layout_width="wrap_content"
                                    android:layout_height="16dp"

                                    android:layout_gravity="center_vertical"
                                    android:paddingLeft="5dp"
                                    android:paddingRight="5dp"
                                    android:text="+49"
                                    android:textColor="?attr/font"
                                    android:textSize="?attr/font_commentinfo"

                                    android:textStyle="bold" />

                                <TextView
                                    android:id="@+id/time"
                                    android:layout_width="wrap_content"
                                    android:layout_height="16dp"

                                    android:layout_alignParentRight="true"
                                    android:layout_gravity="center_vertical"
                                    android:paddingLeft="5dp"
                                    android:paddingRight="5dp"
                                    android:text="4 hours ago"

                                    android:textColor="?attr/font"

                                    android:textSize="?attr/font_commentinfo" />

                                <include
                                    android:id="@+id/gild"
                                    layout="@layout/gilded"
                                    android:layout_width="wrap_content"
                                    android:layout_height="16dp"

                                    android:layout_gravity="center_vertical"
                                    android:gravity="center_horizontal"
                                    android:orientation="horizontal"
                                    android:paddingLeft="5dp"
                                    android:paddingRight="5dp" />

                                <include
                                    android:id="@+id/flairbubble"
                                    layout="@layout/flair"
                                    android:layout_width="wrap_content"
                                    android:layout_height="16dp"

                                    android:layout_gravity="center_vertical"
                                    android:layout_margin="5dp"

                                    android:layout_toRightOf="@+id/pinned"
                                    android:paddingLeft="5dp"
                                    android:paddingRight="5dp"
                                    android:src="@drawable/pinned" />

                                <include
                                    android:id="@+id/you"
                                    layout="@layout/you"
                                    android:layout_width="wrap_content"
                                    android:layout_height="16dp"

                                    android:layout_centerVertical="true"
                                    android:layout_gravity="center_vertical"

                                    android:layout_toRightOf="@+id/pinned"
                                    android:paddingLeft="5dp"
                                    android:paddingRight="5dp"
                                    android:src="@drawable/pinned" />

                                <include
                                    android:id="@+id/op"
                                    layout="@layout/op"
                                    android:layout_width="wrap_content"
                                    android:layout_height="16dp"

                                    android:layout_centerVertical="true"
                                    android:layout_gravity="center_vertical"

                                    android:layout_toRightOf="@+id/pinned"
                                    android:paddingLeft="5dp"
                                    android:paddingRight="5dp"
                                    android:src="@drawable/pinned" />
                            </com.wefika.flowlayout.FlowLayout>
                        </RelativeLayout>


                        <me.ccrama.redditslide.ActiveTextView
                            android:id="@+id/content"
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"
                            android:paddingBottom="16dp"

                            android:textColor="?attr/font"
                            android:textSize="?attr/font_commentbody" />


                    </LinearLayout>

                </LinearLayout>

            </LinearLayout>



        <LinearLayout
            android:id="@+id/menu"
            android:layout_width="match_parent"
            android:layout_height="48dp"
            android:orientation="horizontal"
            android:visibility="gone"
            android:weightSum="4">

            <ImageView
                android:id="@+id/more"
                android:layout_width="0dp"
                android:layout_height="48dp"
                android:layout_weight="1"
                android:background="?android:selectableItemBackground"
                android:padding="12dp"
                android:src="@drawable/more"


                android:tint="?attr/tint" />


            <ImageView
                android:id="@+id/downvote"
                android:layout_width="0dp"
                android:layout_height="48dp"
                android:layout_weight="1"
                android:background="?android:selectableItemBackground"
                android:padding="12dp"

                android:src="@drawable/downvoteicon"
                android:tint="?attr/tint" />

            <ImageView
                android:id="@+id/upvote"
                android:layout_width="0dp"
                android:layout_height="48dp"
                android:layout_weight="1"
                android:background="?android:selectableItemBackground"
                android:padding="12dp"
                android:src="@drawable/upvoteicon"

                android:tint="?attr/tint" />

            <ImageView
                android:id="@+id/reply"
                android:layout_width="0dp"
                android:layout_height="48dp"
                android:layout_weight="1"
                android:background="?android:selectableItemBackground"
                android:padding="12dp"

                android:src="@drawable/reply"
                android:tint="?attr/tint" />
        </LinearLayout>

        <LinearLayout
            android:id="@+id/replyArea"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:padding="16dp"
            android:visibility="gone">

            <EditText
                android:id="@+id/replyLine"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:backgroundTint="?attr/tint"
                android:hint="Reply"
                android:imeOptions="actionDone|flagNoEnterAction"
                android:inputType="textMultiLine|textAutoCorrect|textCapSentences"
                android:minHeight="30dp"
                android:textColor="?attr/font"
                android:textColorHint="?attr/font" />

            <RelativeLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content">

                <TextView
                    android:id="@+id/discard"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:background="?android:selectableItemBackground"
                    android:padding="4dp"

                    android:text="DISCARD"
                    android:textColor="?attr/font"
                    android:textSize="14sp"
                    android:textStyle="bold" />

                <TextView
                    android:id="@+id/send"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentRight="true"
                    android:background="?android:selectableItemBackground"
                    android:padding="4dp"

                    android:text="SUBMIT"
                    android:textColor="?attr/font"

                    android:textSize="14sp"
                    android:textStyle="bold" />
            </RelativeLayout>

            <LinearLayout
                android:id="@+id/innersend2"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:layout_marginLeft="-6dp"
                android:layout_marginRight="-6dp"
                android:alpha=".56"

                android:gravity="center"
                android:orientation="horizontal"

                android:weightSum="8">

                <ImageButton
                    android:id="@+id/imagerep"
                    android:layout_width="0dp"
                    android:layout_height="48dp"
                    android:layout_weight="1"
                    android:height="48dp"
                    android:background="#00000000"
                    android:cropToPadding="false"
                    android:padding="8dp"
                    android:scaleType="fitCenter"
                    android:src="@drawable/image"
                    android:tint="?attr/tint" />


                <ImageButton
                    android:id="@+id/link"
                    android:layout_width="0dp"
                    android:layout_height="48dp"
                    android:layout_weight="1"

                    android:height="48dp"
                    android:background="#00000000"
                    android:cropToPadding="false"
                    android:padding="8dp"
                    android:scaleType="fitCenter"
                    android:src="@drawable/link"
                    android:tint="?attr/tint" />

                <ImageButton
                    android:id="@+id/bold"
                    android:layout_width="0dp"
                    android:layout_height="48dp"
                    android:layout_weight="1"
                    android:height="48dp"
                    android:background="#00000000"

                    android:cropToPadding="false"
                    android:padding="8dp"
                    android:scaleType="fitCenter"
                    android:src="@drawable/bold"
                    android:tint="?attr/tint" />

                <ImageButton
                    android:id="@+id/italics"
                    android:layout_width="0dp"
                    android:layout_height="48dp"
                    android:layout_weight="1"

                    android:height="48dp"
                    android:background="#00000000"
                    android:cropToPadding="false"
                    android:padding="8dp"
                    android:scaleType="fitCenter"
                    android:src="@drawable/italics"
                    android:tint="?attr/tint" />

                <ImageButton
                    android:id="@+id/bulletlist"
                    android:layout_width="0dp"
                    android:layout_height="48dp"
                    android:layout_weight="1"
                    android:height="48dp"
                    android:background="#00000000"
                    android:cropToPadding="false"

                    android:padding="8dp"
                    android:scaleType="fitCenter"
                    android:src="@drawable/bullets"
                    android:tint="?attr/tint" />

                <ImageButton
                    android:id="@+id/numlist"
                    android:layout_width="0dp"
                    android:layout_height="48dp"
                    android:layout_weight="1"
                    android:height="48dp"
                    android:background="#00000000"

                    android:cropToPadding="false"
                    android:padding="8dp"
                    android:scaleType="fitCenter"
                    android:src="@drawable/numbers"
                    android:tint="?attr/tint" />

                <ImageButton
                    android:id="@+id/quote"
                    android:layout_width="0dp"

                    android:layout_height="48dp"
                    android:layout_weight="1"
                    android:height="48dp"
                    android:background="#00000000"
                    android:cropToPadding="false"
                    android:padding="8dp"
                    android:scaleType="fitCenter"
                    android:src="@drawable/quotes"
                    android:tint="?attr/tint" />

                <ImageButton
                    android:id="@+id/size"
                    android:layout_width="0dp"

                    android:layout_height="48dp"
                    android:layout_weight="1"
                    android:height="48dp"
                    android:background="#00000000"
                    android:cropToPadding="false"
                    android:padding="8dp"
                    android:scaleType="fitCenter"
                    android:src="@drawable/fontsizedarker"
                    android:tint="?attr/tint" />
            </LinearLayout>
        </LinearLayout>


    </LinearLayout>


</LinearLayout>