【发布时间】:2018-02-07 15:49:07
【问题描述】:
class MyViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
fun bindata(text: SingleText){
itemView.title.text = text.title
itemView.desc.text = text.desc
}
}
像这段代码一样,Kotlin 在 android-extensions 中有缓存吗?
当我反编译 kotlin 字节码时
public final void bindata(@NotNull SingleText text) {
Intrinsics.checkParameterIsNotNull(text, "text");
((AppCompatTextView)this.itemView.findViewById(id.title)).setText((CharSequence)text.getTitle());
((AppCompatTextView)this.itemView.findViewById(id.desc)).setText((CharSequence)text.getDesc());
}
这意味着当我在Adapter.onBindViewHolder()中调用binData时,每次都会调用findViewById
这显着增加了性能的损失,并没有达到布局复用的目的
Kotlin 在带有 ViewHolder 的 android-extensions 中有任何缓存逻辑吗?
【问题讨论】:
-
findViewById找到已创建的视图。所以这意味着你正在重用它。没有您所说的性能问题。
标签: android android-recyclerview kotlin adapter kotlin-android-extensions