Android 如何构建一个可视寻呼机,它的行为是无限的,并检测它被刷到了哪一边?

Android 如何构建一个可视寻呼机,它的行为是无限的,并检测它被刷到了哪一边?,android,android-fragments,android-viewpager,Android,Android Fragments,Android Viewpager,我知道可以使用viewpager,但我很难找到一个好的资源来解释如何使用viewpager和以下附加功能 要记录滑动是向左还是向右的视图,并且无论哪种方式都只需重新加载新内容(如果向左,我希望它记录否,向右,它记录是) 我希望它是无限的,或者真的很大,比如10000 最后,还可以在下面添加按钮 总之,任何指导、教程或示例都将不胜感激 无选项卡-只是避免实现选项卡侦听器,并在创建视图寻呼机时包含选项卡 读刷 加载新内容 无限大还是真大 下面有按钮-通过将其包含在抽屉布局中来完成 希望这能把事情

我知道可以使用viewpager,但我很难找到一个好的资源来解释如何使用viewpager和以下附加功能

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

我希望它是无限的,或者真的很大,比如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

请参阅以供参考

当有大量数据时,此版本的寻呼机更有用 页,更像列表视图


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

如果您想在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>

你的意思是,你想要一个没有标题指示位置的viewPager,还有无限多的标签?看看我的编辑,我基本上有一个适配器,没有标签,没有标题。我正在尝试做我在交换机案例中适配器中所述的事情查看Konrad答案,使用FragmentStatePagerAdapter获得您想要的结果。将xml张贴在您有ViewPager的地方,我理解您的问题,但在回答之前,让我看看您的xml我添加了xml和上面的场景,谢谢,这里是我尝试读取滑动的场景-如果左记录否,如果右记录是,则从缓存中抓取新内容并显示,使用相同的两个滑动选项,我在想也许我可以有3个“页面”,向左滑动记录动作,然后它重置到位置(中间-1),然后加载缓存中的下一个可用内容。。。唯一的问题是我不知道如何调用reset并要求刷新内容这是不推荐的。你可以使用
androidx.fragment.app.FragmentStatePagerAdapter
我不想用标签或标题。。。我正试图做相反的事情,阅读上面我试图做的场景我一直在试图理解你的意思,但我理解的是:1-如果用户向左滑动,你想重置内容?如果用户向左或向右滑动,我想拖动内容,只需使用向左或向右滑动作为是或否。。。i、 e.如果您熟悉该应用程序,tinder实现其刷卡的方式
    @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 
       }

  }