如何构建一个作用无限的视图寻呼机,并检测它被滑动的一侧



我知道可以使用视图寻呼机,但我很难找到一个好的资源来解释如何使用带有以下附加功能的视图寻呼机。

要记录的视图是向左还是向右滑动,无论哪种方式都只需重新加载新内容(如果向左,我希望它记录否,向右,它记录是)。

我希望它是无限的或者非常大,比如10000。

最后,还可以在下面添加按钮。

总之,任何指导、教程或示例都将不胜感激。

  • 没有选项卡-只是避免了在创建视图寻呼机时实现选项卡侦听器和包含选项卡
  • 读取滑动
  • 加载新内容
  • 无穷大或非常大
  • 下面有按钮-通过将其包含在抽屉布局中来完成

希望这能澄清问题:

更新:这是我试图读取滑动的场景-如果左记录为否,如果右记录为是,那么从缓存中获取新内容并显示它,使用相同的两个滑动选项,我在想也许我可以只有3个"页面",向左滑动记录动作,然后它重置到位置(中间-1),然后加载缓存中可用的下一个内容。。。唯一的问题是我不知道如何调用重置并要求刷新内容。。。


编辑:

没有选项卡已经解决了,只是添加这样的代码:

//viewpager adapter
private PageAdapter mAdapter;
private ViewPager viewPager;

// Initializing pager - in On Create
viewPager = (ViewPager) findViewById(R.id.random_pager);
FragmentManager fm = getFragmentManager();
mAdapter = new PageAdapter(getSupportFragmentManager(), new UserCreatedFragment(), new UserUpVotesFragment(),new UserDownVotesFragment());
viewPager.setAdapter(mAdapter);
// Here you would declare which page to visit on creation
viewPager.setCurrentItem(1);

这是适配器:

public class PageAdapter extends FragmentPagerAdapter{
private Fragment frag1;
private Fragment frag2;
private Fragment frag3;
public PageAdapter(FragmentManager fm, Fragment frag1, Fragment frag2, Fragment frag3) {
super(fm);
this.frag1 = frag1;
this.frag2 = frag2;
this.frag3 = frag3;

}
@Override
public Fragment getItem(int index) {
switch (index) {
case 0:
//fragments should record no and reset to the same frag with new content back in position 1
return frag2;
case 1:
//fragments for activity
return frag2;
case 2:
//fragments should record yes and reset to the same frag with new content back in position 1
return frag2;
}
return null;
}

//return count for number of tabs/swipes
@Override
public int getCount() {
return 3;
}
}

活动的xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent">
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- Framelayout to display Fragments -->
<FrameLayout
android:id="@+id/frame_container"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<!-- Listview to display slider menu -->
<ListView
android:id="@+id/list_slidermenu"
android:layout_width="240dp"
android:layout_height="match_parent"
android:layout_gravity="start"
android:choiceMode="singleChoice"
android:divider="@color/list_divider"
android:dividerHeight="1dp"
android:listSelector="@drawable/list_selector"
android:background="@color/list_background"/>
<!--View pager inside drawer so when opens it displays -->
<LinearLayout
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="300dp"
android:id="@+id/viewPageLinear">
<android.support.v4.view.ViewPager
android:id="@+id/random_pager"
android:layout_width="wrap_content"
android:layout_height="300dp">
</android.support.v4.view.ViewPager>
<Button
android:layout_width="80dp"
android:layout_height="80dp"
android:gravity="center"
android:id="@+id/no"
android:layout_below="@+id/viewPageLinear"/>
<Button
android:layout_width="80dp"
android:layout_height="80dp"
android:gravity="center"
android:layout_below="@+id/no"/>
</LinearLayout>
</android.support.v4.widget.DrawerLayout>


</RelativeLayout>

加载片段的xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent">
<ImageView
android:layout_width="200dp"
android:layout_height="200dp"
android:gravity="center"
android:layout_alignParentTop="true"
android:id="@+id/imagehere"/>

</RelativeLayout>

建议使用FragmentStatePagerAdapter而不是FragmentPagerAdapter

请参阅http://developer.android.com/reference/android/support/v4/app/FragmentStatePagerAdapter.html以供参考。

当有大量数字时,此版本的寻呼机更有用页,工作方式更像列表视图。

除此之外,我还不太清楚问题是什么。

如果您想在ViewPager中具有选项卡标题,则必须将其添加到ViewPager内。

<android.support.v4.view.ViewPager
android:id="@+id/random_pager"
android:layout_width="fill_parent"
android:layout_height="fill_parent">

<android.support.v4.view.PagerTitleStrip
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="top" />
</android.support.v4.view.ViewPager>

如果您想要无限个选项卡,则应使用FragmentStatePagerAdapter,这是在未指定选项卡数量时建议使用的。

编辑。。。

我一直在寻找你的问题的解决方案,这就是我发现的,如果你想知道用户滑动的方向,你可以这样做,实现SimpleOnPageChangeListeneronPageSelected方法这样做:

@Override
public void onPageSelected(final int position) {
onTabChanged(mPager.getAdapter(), mCurrentTabPosition, position);
mCurrentTabPosition = position;
}
};
protected void onTabChanged(final PagerAdapter adapter, final int oldPosition, final int newPosition) {
if (oldPosition>newPosition){
// left to right
}
else{
//right to left 
}
} 

最新更新