【发布时间】:2020-03-29 22:47:06
【问题描述】:
我正在 Android 项目中实现 SpinnerAdapter。所以我必须重写getView(i: Int, convertView: View, parent: ViewGroup) 方法。所以convertView在这里是为了重用现有视图并减少内存使用和GC发生。所以如果是null,我必须创建视图并使用已经创建的视图。
所以其实我得写这样的东西(google官方推荐):
if (view == null) {
view = View.inflate(context, R.layout.item_spinner, parent)
view.tag(Holder(view))
} else {
(view.tag as Holder).title.text = getItem(i)
}
但是 Kotlin 不允许写入参数。 我在网上查到的是一个官方blog post,说从2013年2月开始就不可能了。
所以我想知道是否有任何解决方法?
【问题讨论】:
-
使用单独的变量。无需为参数赋值。
-
than
convertView参数将始终为空,因此每次都会创建新视图。它使视图回收机制完全无用 -
@oleg.semen 不,如果您从
getView方法返回非空View,则View稍后将用作convertView- 正如亨利所说,使用单独的变量 -
您似乎误解了 Java 中的参数是如何工作的。它们基本上是用实际参数初始化的局部变量。在方法内更改它们对调用者没有影响。
-
@pskink 谢谢,明白了