滚动RecyclerView在长TextView上冻结

时间:2016-10-13 15:41:38

标签: android textview android-recyclerview charsequence

我正在尝试使用RecyclerView实现评论部分样式的布局。我有一个CharSequence个对象列表(每个对象都是Html.fromHtml(String, null, null)的结果),我用它来填充RecyclerView

以下是RecyclerView布局:

<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"/>

以下是TextView布局:

<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"/>

以下是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);
    }

其余的很标准。 RecyclerView被赋予LinearLayoutManagerAdapter,从列表中读取并创建ViewHolder个实例。我没有调用setHasFixedSize(true),因为我希望能够交换适配器的内容,并且项目数可能并不总是相同。

该设置适用于大多数输入,但问题是某些CharSequence超过100行,滚动时RecyclerView在到达之前暂停约半秒他们然后继续滚动。它也不会发生一次。当我向上滚动回到项目时,它会再次冻结,然后每次我将项目滚出视图并向下滚动到该项目时,视图会再次冻结。我该如何解决这个问题?

0 个答案:

没有答案