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