繁体   English   中英

获取(垂直)ViewPager的currentItem

[英]Get currentItem of (Vertical)ViewPager

我有一个带有垂直滑块的应用程序,可以在不同的笑脸之间切换(从更快乐到最悲伤),我的问题是我不知道如何获取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之间的整数。 (不同的位置),如果我不好,它会显示-50。

我不明白我在做什么错,因为我设置了verticalVP.setCurrentItem(3),所以显示了相应的笑脸……在此先感谢您,对不起我的英语不好:)

**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中的getcurrentItem方法。 如下所示,将为您提供视图寻呼机的pageNumber。

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

此方法getCurrentItem将为您工作,以获取ViewPager fragmentposition ,您可以像下面这样使用:

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

YourActivity是您将ViewPager与适配器完全配合使用的ViewPager ,而getActivity()Context作为fragment引用的参考,请不要忘记将verticalViewPager对象作为public访问说明符。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM