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

我已经阅读了Developer Sitethis教程,但我还是不明白。由于我是Android的初学者,请帮助我理解这一概念。

最佳答案

为了理解这一点,您必须首先了解 BaseAdapter 的工作原理,因为 CursorAdapter BaseAdapter的子类。

Android为ListView维护了一个 View 池,它将提供给您,以便您可以重用它而不是每次都创建一个新 View 。

BaseAdapter中,您将拥有一个名为 getView() 的函数,其中一个参数是名为ViewconvertView对象。基本上,如果是第一次加载列表,则此convertView将为null,而一旦开始滑动列表,该null将不再是getView()。因此,在BaseAdapterconvertView方法中,您将检查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/

10-10 09:53