【发布时间】:2015-07-09 08:41:54
【问题描述】:
在 Gmail 应用程序中,当您点击电子邮件时,该特定电子邮件会打开,左右滑动会分别打开上一封或下一封电子邮件。
我想在我的应用程序中做同样的事情,我所做的是:
1.制作一个sqlite数据库并使用SimpleCursorAdapter填充ListView
2.ListView onItemClickListener 打开一个具有 ViewPager 的 Activity,并在它的帮助下设置一个 Fragment。
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,但我想知道这是否可行?如果是,怎么做?
【问题讨论】:
标签: android android-fragments android-listview android-sqlite