当从适配器访问位置时,Recyclerview滞后

时间:2018-04-08 22:33:53

标签: android

我希望做一次性工作,从我的适配器和我的自定义列表中获取前三个对象。用它做一些逻辑,因此我从OnBindViewHolder访问 位置

但是当我访问它并执行我的逻辑时,它会在我的recyclelerview中产生重大延迟,尤其是在滚动时

if (position == 0) {
    holder.mGoldTrophy.setVisibility(View.VISIBLE);
} else if (position == 1) {
    holder.mSilverTrophy.setVisibility(View.VISIBLE);
} else if (position == 2) {
    holder.mBronzeTrophy.setVisibility(View.VISIBLE);
}

当我删除此代码时,它会顺利运行

编辑:我试图删除位置&立即设置可见性,它也导致滞后,所以我认为这将是我的布局问题

 <FrameLayout
                android:layout_width="65dp"
                android:layout_height="65dp">

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

                <de.hdodenhof.circleimageview.CircleImageView
                    xmlns:app="http://schemas.android.com/apk/res-auto"
                    android:id="@+id/ID_image_upload_photoOfTheUser"
                    android:layout_width="64dp"
                    android:layout_height="64dp"
                    android:src="@drawable/hey"
                    app:civ_border_width="2dp"
                    app:civ_border_color="#FF000000" />

                <!--It can be 30dp & 36dp-->

                <ImageView
                    android:id="@+id/ID_my_talent_golden_trophy"
                    android:visibility="gone"
                    android:src="@drawable/golden_trophy"
                    android:layout_width="40dp"
                    android:layout_height="48dp"
                    android:layout_alignParentEnd="true"
                    android:layout_alignParentBottom="true" />

                <ImageView
                    android:id="@+id/ID_my_talent_silver_trophy"
                    android:visibility="gone"
                    android:src="@drawable/silver_trophy"
                    android:layout_width="40dp"
                    android:layout_height="48dp"
                    android:layout_alignParentEnd="true"
                    android:layout_alignParentBottom="true" />


                <ImageView
                    android:id="@+id/ID_my_talent_bronze_trophy"
                    android:visibility="gone"
                    android:src="@drawable/bronze_trophy"
                    android:layout_width="40dp"
                    android:layout_height="48dp"
                    android:layout_alignParentEnd="true"
                    android:layout_alignParentBottom="true" />

            </RelativeLayout>
        </FrameLayout>

1 个答案:

答案 0 :(得分:0)

代码没有任何问题,问题在于图像,我使用了非常大的图像而没有调整大小,因此在使用它时显示出很多延迟。

解决方案是将我的drawable的大小更改为更小的尺寸

我使用Android Asset Studio来修正此错误,并且运行平稳时效果很好,感谢您的时间。