【问题标题】:Get currentItem of (Vertical)ViewPager获取 (Vertical)ViewPager 的 currentItem
【发布时间】:2019-03-01 18:45:11
【问题描述】:

我有一个带有垂直滑块的应用程序,可以在不同的笑脸之间切换(从更快乐到最悲伤) 我的问题是我不知道如何获取 ViewPager 的 currentItem(当用户在特定笑脸时)

我试过了

verticalViewPager.setOnTouchListener(new View.OnTouchListener() {
         @Override
         public boolean onTouch(View v, MotionEvent event) {
                mPreferences.edit().putInt(PREF_KEY_CURRENT_SMILEY,verticalViewPager.getCurrentItem()).apply();
                return false;
         }
});

在其他活动中(我必须存储当前选择的笑脸):

currentSmileyInt = mPreferences.getInt(PREF_KEY_CURRENT_SMILEY,-50);

    currentSmileyString = Integer.toString(currentSmileyInt);
    currentSmileyTextView.setText(currentSmileyString);

如果我很好,其他活动上的 textview 应该显示 1-6 之间的 int。 (不同的位置),如果我不好,它显示-50。

我不明白我做错了什么,因为我设置了verticalVP.setCurrentItem(3) 会显示相应的笑脸...... 提前谢谢你,对不起我的英语不好:)

【问题讨论】:

标签: java android android-viewpager


【解决方案1】:
**You can use ViewPager.OnPageChangeListener** 
  SharedPreferences pref = getApplicationContext().getSharedPreferences("MyPref", 0); // 0 - for private mode
  final SharedPreferences.Editor editor = pref.edit();


           viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener(){
                @Override
                public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
                }    
                @Override
                public void onPageSelected(int position) {
                    currentPage=position;
                    Toast.makeText(MainAsyncActivity.this, "position: "+position, Toast.LENGTH_SHORT).show();
                    editor.putInt("key_name",currentPage); // Storing integer
                    editor.commit(); // commit changes

                }

                @Override
                public void onPageScrollStateChanged(int state) {
                }
            });    

**get stored value from SharedPreferences**

   int currentSmileyInt=  pref.getInt("key_name", 0);
   Log.d("Keyname: ", String.valueOf(currentSmileyInt));
   String currentSmileyString = Integer.toString(currentSmileyInt);
   currentSmileyTextView.setText(currentSmileyString);

【讨论】:

  • 这几乎奏效了,因为我的 ViewPager 是 VerticalViewPager,我无权访问 .addOnPageChangeListener... 我有 onScrollChangeListener、onAttacheStateChangeListener,我可以使用其中之一吗?谢谢
  • 我已经 setOnPageChangeListener 了!
【解决方案2】:

为什么不直接使用 viewpager 中的 getcurrentItem 方法。如下所示,将为您提供视图寻呼机的 pageNumber。

 //  getting current Page
 int page = mPager.getCurrentItem();

【讨论】:

    【解决方案3】:

    此方法getCurrentItem 将帮助您获得positionViewPager fragment,您可以像下面这样使用:

    ((YourActivity)getActivity()).verticalViewPager.getCurrentItem()); 
    

    YourActivity是您将ViewPager与适配器一起使用的地方,getActivity()Context作为fragment的参考,不要忘记将verticalViewPager对象作为public访问说明符。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-05
      相关资源
      最近更新 更多