LoaderThrottle魔术技巧

时间:2012-08-17 20:41:58

标签: android sqlite android-contentprovider android-cursoradapter android-listfragment

我是Android的新手。我花了我的免费夏季来研究它,试图开发一个应用程序。

我需要在列表(ListView)中显示来自数据库表的数据,以便用户操作它。

我找到了simpleCursorAdapter,但是为了避免在UI Thread中执行查询,它被指示为已弃用。 使用我的fisrt表,它将保持较小,这可能不是一个问题,但它与主表一样。所以我研究了LoaderManager推荐的更换。

我在ApiDemos SDK Samples中找到了LoaderThrottle示例,试图了解LoaderManager机制。 ApiDemos / SRC / COM /示例/机器人的/ apis /应用程序/ LoaderThrottle.java

我努力理解这个例子,但我还有一点我不明白。

我没有在406行找到android.R.layout.simple_list_item_1和android.R.id.text1:

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

我也没有在第377行找到android.R.id.content:

        // Create the list fragment and add it as our sole content.
    if (fm.findFragmentById(android.R.id.content) == null) {
        ThrottledLoaderListFragment list = new ThrottledLoaderListFragment();
        fm.beginTransaction().add(android.R.id.content, list).commit();
    }

ApiDemos布局目录中没有simple_list_item_1.xml。 在不同的布局中有很多text1但是没有找到它可能是哪一个。 找到3个“内容”,一个在ContentBrowserActivity $ Content ...

类型的content_browser.xml中

所以我不明白与我期待的ListView的链接在哪里。

所以对我而言,它仍然是“神奇的”,因为我没有看到ListView和适配器之间的隐藏链接。

我应该在ListView中拥有什么? 没有?我从数据库获得的每个数据有一个TextView吗?

如果某人有一个LoaderManager示例链接数据库表与ListView没有融合所有其他ApiDemos,我会很喜欢它!

提前感谢您的提示和答案, Florent的

1 个答案:

答案 0 :(得分:0)

感谢您的回答。我现在更了解这种机制。 无需创建特定布局。

所以我认为与应用程序其余部分的链接在FragmentTabs活动中,第54行:

bar.addTab(bar.newTab()
    .setText("Throttle")
    .setTabListener(new TabListener<LoaderThrottle.ThrottledLoaderListFragment>(
            this, "throttle", LoaderThrottle.ThrottledLoaderListFragment.class)));

ApiDemos / SRC / COM /示例/机器人的/ apis /应用程序/ FragmentTabs.java

祝你好运, Florent的