如何在ListView / RecyclerView中滑动下一个项目?

时间:2015-07-09 08:41:55

标签: android android-fragments android-listview android-sqlite

在Gmail应用中,当您点击电子邮件时,该特定电子邮件会打开并向左和向右滑动分别打开上一封或下一封电子邮件。

我想在我的应用中做同样的事情,我所做的是:

1.创建 sqlite 数据库并使用 SimpleCursorAdapter 填充 ListView

2.ListView onItemClickListener 打开一个具有 ViewPager 的Activity,并借助它来设置片段。

public class PagerActivity extends AppCompatActivity {

ViewPager pager;
FragmentPagerAdapter adapter;
Toolbar toolbar;
Bundle b;
Long id;
int count;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_screen_slide_pager);
    toolbar = (Toolbar) findViewById(R.id.tool_bar);
    setSupportActionBar(toolbar);
    b=getIntent().getExtras();
    id=b.getLong("id");
    count=b.getInt("count");
    adapter=new PagerAdapter(getSupportFragmentManager(),id,count);
    pager=(ViewPager)findViewById(R.id.pagerAdapter);
    pager.setAdapter(adapter);
}

3.我也使用cursor.getCount()获取行计数并将其传递给 FragmentPagerAdapter ,然后再设置可滑动的视图/片段的数量。

4.这个工作正常但如果我在ListView中点击 5 的项目编号,我可以滑动到 6,7 .. 但是无法刷回 4

public class PagerAdapter extends FragmentStatePagerAdapter {
Long id;
int count;
Bundle b;

public PagerAdapter(FragmentManager fm,Long mId,int mCount) {
    super(fm);
    this.id=mId;
    this.count=mCount;
}

@Override
public Fragment getItem(int position) {
    b=new Bundle();
    b.putInt("position",position);
    b.putLong("id", id);
    b.putInt("count",count);
    PageFragment PageFragment=new PageFragment();
    pageFragment.setArguments(b);
    return pageFragment;
}

@Override
public int getCount() {
    return count;
}

}

如果需要,我准备从ListView切换到RecyclerView,但我想知道这是否可行?如果有,怎么样?

1 个答案:

答案 0 :(得分:0)

Yepp在Listitem上启动一个Activity点击,然后使用FragmentPagerAdapter和Viewpager一起工作。我也亲自实现了它。