android - 在 CursorAdapter 中 bindView() 和 newView() 做了什么

标签 android android-cursoradapter

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

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

最佳答案

为了理解这一点,你必须先了解BaseAdapter工作,因为 CursorAdapterBaseAdapter 的子类。

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

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

当 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/

相关文章:

android - 使用 CursorLoader 和 LoaderManager 从 Android 应用程序中检索图像

android - CursorTreeAdapter.setChildrenCursor() 导致循环

Android Studio XML 错误 "Corresponding method handler not found"onClick

java - 应用程序不断停止与 TextView.setText() 方法

android - CursorAdapter ListView刷新

android - CursorAdapter 和按钮

android - ListView 的 CursorAdapter 与 ArrayAdapter

android - 如何检测位图中的红色像素

android - 如何实现向上滑动 View (如 facebook 应用程序中的新闻提要)

Android Camera Intent - 内存不足错误和旋转错误