1

我正在尝试构建类似于Android Fragments 教程的内容:左侧有一个 ListView 片段,右侧有一个可以显示项目的片段。

现在,我试图通过 SimpleCursorAdapter(我通过 LoaderManager 使用)加载列表中的第一项(或不久之后)——所有这些都使用 Android 支持库。

public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    mAdapter = new SimpleCursorAdapter(/* options */);
    setListAdapter(mAdapter);
}

public Loader<Cursor> onCreateLoader(int id, Bundle args) {
    CursorLoader cl = new CursorLoader(getActivity());
    /* setProjection, etc */
    return cl;
}

public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
    mAdapter.swapCursor(data);
}

public void onLoaderReset(Loader<Cursor> loader) {
    mAdapter.swapCursor(null);
}

我检查了各种示例实现,它们似乎都太简单了,或者根本没有在加载时填充右侧的片段,而只是在单击时填充。

无论如何我都需要实现onLoadFinished,但这对我来说太晚了,因为我正在加载一个长长的列表。所以我在想onItemLoadedListener我只会在第一次调用它时使用它。但似乎没有这样的东西存在,所以我很困惑。

感谢您的任何指点!

4

1 回答 1

1

你有什么反对太简单了?

 public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
     data.moveToFirst();
     Bundle b = new Bundle();
     // get info from that first item and put into the bundle
     ...

     ContentFrag f = new ContentFrag();
     f.setArguments(b);
     getSupportFragmentManager().beginTransaction().replace(R.id.contentLayout, f).commit();

     // instantiate and set your adapter
     ...
 }

简单的!就像任何其他片段事务一样。

于 2012-11-08T17:47:16.910 回答