加载第一个列表项时,在第二个片段中加载项

时间:2012-11-08 17:42:28

标签: android android-listview android-fragments

我正在尝试构建类似于Android Fragments tutorial的东西:左边有一个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的问题,我只会在第一次调用时使用它。但似乎没有这样的东西存在,所以我很困惑。

感谢您的任何指示!

1 个答案:

答案 0 :(得分: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
     ...
 }

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