25

我的项目中有一个自定义方法,CursorAdaptor其中包含重写方法bindView(View view, Context context, Cursor cursor)newView(View view, Context context, Cursor cursor). 我想知道用于什么以及覆盖andCursorAdapter的区别和用途是什么。 bindView()newView()

我已经阅读了开发者网站教程,但我仍然不明白。由于我是 Android 的初学者,请帮助我理解这个概念。

4

1 回答 1

126

为了理解这一点,您必须首先了解其BaseAdapter工作原理,因为CursorAdapter它是BaseAdapter.

Android 维护了一个视图池,ListView它将提供给您,因此您可以重复使用它,而不是每次都创建一个新视图。

在其中BaseAdapter,您将拥有一个名为 的函数getView(),其中一个参数是一个View名为 的对象convertView。基本上,这convertView将是第一次加载列表时,一旦开始滑动列表null就不会了。null因此,在您的getView()方法中BaseAdapter,您将检查 if convertViewis null。如果是的话,你会膨胀它。然后您可以使用视图并将其元素设置为正常。这将极大地提高列表视图的滚动性能。

当列表视图的数据源是数据库时, ACursorAdapter使其易于使用。然而,在光标适配器中,Android 负责检查是否convertView存在null。在该newView()方法中,您只需对视图进行膨胀并返回它。在该bindView()方法中,您设置视图的元素。

例如,假设设备上的列表视图可以在屏幕上显示多达 11 个列表项。在这种情况下,newView()最多会调用 11 次。但是,bindView()每当您滚动列表视图时都会调用多次。您在 newView 方法中创建的 11 个视图将在您滚动列表时一次又一次地重复使用。

于 2012-10-01T12:10:27.013 回答