gpt4 book ai didi

android - 在 android 2.2 中使用 Cursor Adapters 和 Content Provider 的正确方法是什么

转载 作者:行者123 更新时间:2023-11-30 04:31:28 24 4
gpt4 key购买 nike

我很困惑,我需要你的帮助。我尝试按照 Virgil Dobjanschi 在他的演讲中给出的说明进行操作' Developing Android REST Client Applications ' 在 Google IO 2010 上给出。不幸的是,我找不到在内容提供程序和游标适配器之间实现有效通信的方法。

我这里遇到的问题与游标适配器有关,所以让我们假设内容提供商一切正常。例如,让我们尝试使用 Contacts ContentProvider 而不是我自己的。我尝试了最简单的解决方案——任何 ContentProvider(假定为 Contacts,由 SDK 提供)和 SimpleCursorAdapter。问题是包含来自联系人的光标的 SimpleCursorAdapter 的构造函数已被弃用。文档说:

This constructor is deprecated.

This option is discouraged, as it results in Cursor queries being performed on the application's UI thread and thus can cause poor responsiveness or even Application Not Responding errors. As an alternative, use LoaderManager with a CursorLoader.

我的想法是:“好吧,我不会用它。我会试试 LoaderManager 和 CursorLoader,因为他们建议我。”所以我去了LoaderManager documentation site查找使用示例以及我发现了什么?使用 SimpleCursorAdapter 构造函数的完美示例。是的,我想避免因为它已弃用。

    // Create an empty adapter we will use to display the loaded data.
mAdapter = new SimpleCursorAdapter(getActivity(),
android.R.layout.simple_list_item_2, null,
new String[] { Contacts.DISPLAY_NAME, Contacts.CONTACT_STATUS },
new int[] { android.R.id.text1, android.R.id.text2 }, 0);
setListAdapter(mAdapter);

我能找到的所有教程都使用这个已弃用的构造函数。谁能给我一个很好的答案,避免使用它的正确方法是什么?或者也许我太在乎它了?我只想学习良好的实践...

最佳答案

如果您在 Android 2.2 上使用 LoaderManager,我假设您的项目中已经有 Android 兼容性库。

在那种情况下,不要使用

android.widget.SimpleCursorAdapter

因为该类只有一个现已弃用的构造函数。而是使用:

android.support.v4.widget.SimpleCursorAdapter

来自兼容库。它有两个构造函数:

SimpleCursorAdapter(Context, int, Cursor, String[], int[]) // deprecated
SimpleCursorAdapter(Context, int, Cursor, String[], int[], int) // non-deprecated

您问题中的代码示例使用了第二个未弃用的构造函数,因此必须使用 SimpleCursorAdapter 的兼容库版本。

关于android - 在 android 2.2 中使用 Cursor Adapters 和 Content Provider 的正确方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7626722/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com