我正在尝试使用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)
是因为我希望能够交换适配器的内容,并且项目的数量可能并不总是相同的。
该设置适用于大多数输入,但问题是一些CharSequence
s 长度超过 100 行,并且在滚动时,在RecyclerView
到达它们之前暂停大约半秒,然后继续滚动。它也不会只发生一次。当我向上滚动到该项目时,它再次冻结,然后每次我将项目滚动到视图之外并向下滚动到它时,视图再次冻结。我该如何解决?