android - SimpleCursorAdapter 将所有内容绑定(bind)两次

标签 android performance android-layout

我的应用程序提供了几个由数据库支持的 ListView。每个都使用一个游标适配器和一个提供程序来连接数据库和 UI。在一种情况下,我使用开箱即用的 SimpleCursorAdapter(使用自定义 ViewBinder);在另一种情况下,我将 SimpleCursorAdapter 子类化。

在跟踪我的应用程序时,我发现每次加载这些 ListView 时,游标适配器都会对列表中的每个项目调用它们的 getView() 和 bindView() 方法两次。为什么会发生这种情况,有什么办法可以避免吗?

最佳答案

如果您将 ListView 的宽度(或高度)设置为 wrap_content,则会导致此问题。将其切换为 Fill_Parent 或 match_parent 将 ListView 的宽度(或高度)设置为 wrap_content 将导致它测量前 3 个项目并将其尺寸基于这些项目。为了测量前 3 个项目,它必须调用 bindView() 来填充它们。一旦测量完成,它将完全填充并在前 3 个和任何后续的上再次调用 bindView()。

见同题Why does Wrap_Content fire BindView more than once

关于android - SimpleCursorAdapter 将所有内容绑定(bind)两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14737777/

相关文章:

iterator - 在 python 中快速迭代可迭代对象(不是列表)的前 n 项

android - 添加 BulletSpan 时 EditText 不增加宽度

performance - 带仪表板的最佳应用程序监控系统

android - 如何在 Cordova 项目中使用 PhoneGap Developer App

android - 如何访问使用 MIFARE 应用程序目录结构的 MIFARE Classic 卡?

android - 如何从 Android 中 native 编译的 C++ 二进制文件访问相机

javascript - 如何在 web pack 2 中异步加载 1 个以上模块?

android - 在 Listview 项目布局中可调整大小的 ImageView 下的 Textview?

html - Nativescript ScrollView 被 gridview 裁剪

java - : Hand over points to GameOverActivity