2012-11-08 63 views
0

我想要构建类似于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

你对抗太简单了吗?

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 
    ... 
} 

简单!就像任何其他片段交易一样。

+0

哇,这很快,谢谢。我在更新了这个问题的同时发布了这个问题,并且简短地列出了这个问题,列表很长,onLoadFinished的时间太晚,所以我认为这不是我的解决方案。 – akirk

+0

好的,我需要回去。实际上,即使列表很长,这也称为非常快。作品。谢谢! – akirk

相关问题