我的项目中有一个自定义方法,CursorAdaptor
其中包含重写方法bindView(View view, Context context, Cursor cursor)
和newView(View view, Context context, Cursor cursor)
. 我想知道用于什么以及覆盖andCursorAdapter
的区别和用途是什么。 bindView()
newView()
1 回答
为了理解这一点,您必须首先了解其BaseAdapter
工作原理,因为CursorAdapter
它是BaseAdapter
.
Android 维护了一个视图池,ListView
它将提供给您,因此您可以重复使用它,而不是每次都创建一个新视图。
在其中BaseAdapter
,您将拥有一个名为 的函数getView()
,其中一个参数是一个View
名为 的对象convertView
。基本上,这convertView
将是第一次加载列表时,一旦开始滑动列表null
就不会了。null
因此,在您的getView()
方法中BaseAdapter
,您将检查 if convertView
is null
。如果是的话,你会膨胀它。然后您可以使用视图并将其元素设置为正常。这将极大地提高列表视图的滚动性能。
当列表视图的数据源是数据库时, ACursorAdapter
使其易于使用。然而,在光标适配器中,Android 负责检查是否convertView
存在null
。在该newView()
方法中,您只需对视图进行膨胀并返回它。在该bindView()
方法中,您设置视图的元素。
例如,假设设备上的列表视图可以在屏幕上显示多达 11 个列表项。在这种情况下,newView()
最多会调用 11 次。但是,bindView()
每当您滚动列表视图时都会调用多次。您在 newView 方法中创建的 11 个视图将在您滚动列表时一次又一次地重复使用。