【发布时间】:2015-11-13 17:22:01
【问题描述】:
我有一个现有的应用程序,显示来自数据库的五个不同的条目列表。它使用左侧抽屉来选择显示哪个列表。
我想在这些列表中使用 ViewPager,但很难弄清楚它是如何工作的。不幸的是,我找不到解决这个问题的教程。
我有一个将 viewpagerAdapter 连接到的 MainActivity
MainActivity extends AppCompatActivity {
...
@Override
protected void onCreate(Bundle savedInstanceState) {
...
// Setting the viewpager
mPager = (ViewPager) findViewById(R.id.pager_container_home);
mPagerAdapter = new EntriesListPagerAdapter(getSupportFragmentManager());
mPager.setAdapter(mPagerAdapter);
...
}
private class EntriesListPagerAdapter extends FragmentPagerAdapter {
...
@Override
public Object instantiateItem(ViewGroup container, int position) {
// What to put here???
return view;
}
}
我有一个 ListFragment 类从 ResourceCursorAdapter(称为 EntriesCursorAdapter)获取数据。这是一堂很长的课,所以我给出了一些部分来给你一个想法。
public class EntriesListFragment extends ListFragment {
...
@Override
public Loader<Cursor> onCreateLoader(int id, Bundle args) {
...
@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
mEntriesCursorAdapter.swapCursor(data);
}
@Override
public void onLoaderReset(Loader<Cursor> loader) {
mEntriesCursorAdapter.swapCursor(Constants.EMPTY_CURSOR);
}
}
@Override
public void onCreate(Bundle savedInstanceState) {
setHasOptionsMenu(true);
super.onCreate(savedInstanceState);
if (savedInstanceState != null) {
mUri = savedInstanceState.getParcelable(STATE_URI);
mShowFeedInfo = savedInstanceState.getBoolean(STATE_SHOW_FEED_INFO);
mListDisplayDate = savedInstanceState.getLong(STATE_LIST_DISPLAY_DATE);
mEntriesCursorAdapter = new EntriesCursorAdapter(getActivity(), mUri, Constants.EMPTY_CURSOR, mShowFeedInfo);
}
}
@Override
public View inflateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_entry_list, container, true);
if (mEntriesCursorAdapter != null) {
setListAdapter(mEntriesCursorAdapter);
}
mListView = (ListView) rootView.findViewById(android.R.id.list);
...
}
public void setData(Uri uri, boolean showFeedInfo) {
mUri = uri;
mShowFeedInfo = showFeedInfo;
mEntriesCursorAdapter = new EntriesCursorAdapter(getActivity(), mUri, Constants.EMPTY_CURSOR, mShowFeedInfo);
}
您能帮我创建五个列表片段实例(使用 cursoradapter)并将其连接到 MainActivity 中的 ViewPager 吗?欢迎任何提示如何继续。
更新:我注意到 FragmentPagerAdapter 来自 support.v4 库。如果我要使用它,看起来我也必须使用 support.v4 中的 ListFragment,包括 LoaderManager。不幸的是,LoaderManager 不容易升级到 support.v4。欢迎任何想法。
【问题讨论】:
标签: android android-viewpager android-listfragment android-cursoradapter