0

我正在尝试使用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定 aLinearLayoutManager和 anAdapter从列表中读取并创建ViewHolder实例。我没有打电话setHasFixedSize(true)是因为我希望能够交换适配器的内容,并且项目的数量可能并不总是相同的。

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

4

0 回答 0