我正在尝试构建类似于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
的问题,我只会在第一次调用时使用它。但似乎没有这样的东西存在,所以我很困惑。
感谢您的任何指示!
答案 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
...
}
简单!就像任何其他片段事务一样。