我在我的项目中有一个自定义 CursorAdaptor
重写方法 bindView(View view, Context context, Cursor cursor)
和 newView(View view, Context context , 光标光标)
。
我想知道 CursorAdapter
的用途以及覆盖 bindView()
和 newView()
的区别和用途。
我已阅读 Developer Site和 this教程,但我还是不明白。由于我是 Android 初学者,请帮助我理解这个概念。
最佳答案
为了理解这一点,你必须先了解BaseAdapter
工作,因为 CursorAdapter
是 BaseAdapter
的子类。
Android 为 ListView
维护一个 View 池,它将提供给您,以便您可以重复使用它,而不是每次都创建一个新 View 。
在 BaseAdapter
中,您将拥有一个名为 getView()
的函数,其中一个参数是名为 convertView
的 View
对象。基本上,如果列表是第一次加载,这个 convertView
将是 null
,一旦你开始滑动它就不会是 null
列表。因此,在 BaseAdapter
的 getView()
方法中,您将检查 convertView
是否为 null
。如果是的话,你会膨胀它。然后您可以使用 View 并将其元素设置为正常。这将极大地提高 ListView 的滚动性能。
CursorAdapter
使其易于使用。然而,在光标适配器中,Android 负责检查 convertView
是否为 null
。在 newView()
方法,您只需膨胀 View 并返回它。在 bindView()
方法,您设置 View 的元素。
例如,假设设备上的 ListView 可以在屏幕上显示多达 11 个列表项。在这种情况下,newView()
将被调用多达 11 次。但是,每当您滚动 ListView 时,都会多次调用 bindView()
。您在 newView 方法中创建的 11 个 View 将在您滚动列表时一次又一次地重复使用。
关于android - 在 CursorAdapter 中 bindView() 和 newView() 做了什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12672749/