Scrolling RecyclerView freezes on long TextViews

*爱你&永不变心* 提交于 2019-12-14 04:12:18

问题


I am trying to implement a comment section-style layout using a RecyclerView. I have a list of CharSequence objects (each the result of Html.fromHtml(String, null, null)) which I use to populate this RecyclerView.

Here is the RecyclerView layout:

<android.support.v7.widget.RecyclerView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/list"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>

Here is the TextView layout:

<TextView
    android:id="@+id/text"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="16dp"
    android:lineSpacingMultiplier="1.4"
    android:textAppearance="@style/TextAppearance.AppCompat.Body1"
    android:textIsSelectable="true"
    android:textSize="15sp"/>

Here is the ViewHolder:

public final class ItemHolder extends RecyclerView.ViewHolder {
    @Bind(R.id.text) TextView text; // ButterKnife

    public ItemHolder(View itemView) {
        super(itemView);
        ButterKnife.bind(this, itemView);
        text.setMovementMethod(new LinkMovementMethod());
    }

    public void bind(CharSequence cs) {
        text.setText(cs);
    }

The rest is pretty standard. The RecyclerView is given a LinearLayoutManager and an Adapter that reads from the list and creates ViewHolder instances. I did not call setHasFixedSize(true) because I want to be able to swap the contents of the adapter and the number of items might not always be the same.

The setup works for most input, but the problem is that some of the CharSequences are over 100 lines long, and when scrolling, the RecyclerView pauses for about half a second just before it reaches them and then continues scrolling. It doesn't just happen once either. When I scroll back up to the item, it freezes again, and then everytime I scroll the item out of view and scroll back down to it, the view freezes again. How do I fix this?

来源:https://stackoverflow.com/questions/40025436/scrolling-recyclerview-freezes-on-long-textviews

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!