首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >理解FragmentStatePagerAdapter

理解FragmentStatePagerAdapter
EN

Stack Overflow用户
提问于 2014-03-05 04:48:06
回答 1查看 318关注 0票数 0

我在网上发现了这段代码,并试图在我的项目中进行测试。我的项目使用一个数据库,我想在每条记录之间滑动,所以我认为ViewPager是最好的选择。我的活动和片段已经在工作,但是我不知道如何将附加的代码实现到我的项目中。我要找的是我在哪里怎么用这个?从活动还是碎片?我该怎么做呢?我已经有一个光标和投影,但现在真的确定两者是如何工作在一起的。我希望我说的有道理。

代码语言:javascript
复制
public class CursorPagerAdapter<F extends Fragment> extends FragmentStatePagerAdapter {
    private final Class<F> fragmentClass;
    private final String[] projection;
    private Cursor cursor;

    public CursorPagerAdapter(FragmentManager fm, Class<F> fragmentClass, String[] projection, Cursor cursor) {
        super(fm);
        this.fragmentClass = fragmentClass;
        this.projection = projection;
        this.cursor = cursor;
    }

    @Override
    public F getItem(int position) {
        if (cursor == null) // shouldn't happen
            return null;

        cursor.moveToPosition(position);
        F frag;
        try {
            frag = fragmentClass.newInstance();
        } catch (Exception ex) {
            throw new RuntimeException(ex);
        }
        Bundle args = new Bundle();
        for (int i = 0; i < projection.length; ++i) {
            args.putString(projection[i], cursor.getString(i));
        }
        frag.setArguments(args);
        return frag;
    }

    @Override
    public int getCount() {
        if (cursor == null)
            return 0;
        else
            return cursor.getCount();
    }

    public void swapCursor(Cursor c) {
        if (cursor == c)
            return;

        this.cursor = c;
        notifyDataSetChanged();
    }

    public Cursor getCursor() {
        return cursor;
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-05 07:16:45

这就是修改代码的方法

代码语言:javascript
复制
ItemDetailFragment fragment = new ItemDetailFragment();
fragment.setArguments(arguments);
getSupportFragmentManager().beginTransaction().add(R.id.item_detail_container, fragment).commit();

ViewPager vpPager = (ViewPager) findViewById(R.id.pager);
CursorPagerAdapter<ItemDetailFragment> adapterViewPager = new CursorPagerAdapter(
    getSupportFragmentManager(), fragment_class, your_projection, your_cursor);
vpPager.setAdapter(adapterViewPager);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22188804

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档