Java 提高设置TextView RecylcerView时的可跨越/可跨越性能

Java 提高设置TextView RecylcerView时的可跨越/可跨越性能,java,android,android-recyclerview,textview,spannable,Java,Android,Android Recyclerview,Textview,Spannable,我有一个RecyclerView,其中有许多textview。其中一个文本视图通过从数组列表中提取的标记的字符串填充了一个跨区。在阅读了Florina Muntenescu的教程后,我意识到我可以通过使用Spannable Factory来提高我的性能。我最大的问题是她的代码是用Kotlin编写的(我还不太清楚) 据我所知,这是关键信息 假设我们希望重用TextView并多次设置文本,就像在RecyclerView.ViewHolder中一样 在获得一个 对文本视图的引用。如果您使用的是Recy

我有一个
RecyclerView
,其中有许多
textview
。其中一个
文本视图
通过从
数组列表
中提取的标记的
字符串
填充了一个
跨区
。在阅读了Florina Muntenescu的教程后,我意识到我可以通过使用
Spannable Factory
来提高我的性能。我最大的问题是她的代码是用
Kotlin
编写的(我还不太清楚)

据我所知,这是关键信息

假设我们希望重用
TextView
并多次设置文本,就像在
RecyclerView.ViewHolder
中一样

在获得一个 对文本视图的引用。如果您使用的是RecyclerView,请执行此操作 当你第一次夸大你的观点时

因此,假设我有一个简单的
RecyclerView适配器
设置一个跨越的
文本视图

@Override
public void onBindViewHolder(RecyclerViewHolder rvh, int position){

    String string =arrayList.get(position).getValue();
    Spanned spanned = getSpannedValue(string);
    rvh.tv.setText(spanned);
}

如何更改代码以利用Florina的建议?

在java中,您应该在其实现cast source(CharSequence)中将方法
newspanable
重写为Spannable,并将此工厂设置为
TextView
(在我的例子中为tvText)


请记住,它应该是
ViewHolder的
构造函数中设置的而不是
onBindViewHolder
。当您通过
findViewById

获得对它的引用时,谢谢,所以我找到了dviewbyid,然后添加您的代码,然后设置文本。。。全方位视野保持器。对吗?哦,我的意思是我找到了viewbyd,然后添加你的代码。。。在ViewHolde构造函数中。和OnBindViewHolder中的setText我们应该在哪里编写setSpan?SpannableFactory如何减少对象创建的数量?
textView.setSpannableFactory(spannableFactory)
@Override
public void onBindViewHolder(RecyclerViewHolder rvh, int position){

    String string =arrayList.get(position).getValue();
    Spanned spanned = getSpannedValue(string);
    rvh.tv.setText(spanned);
}
       tvText.setSpannableFactory(new Spannable.Factory(){
            @Override
            public Spannable newSpannable(CharSequence source) {
                return (Spannable) source;
            }
        });