获取 (Vertical)ViewPager 的 currentItem

我有一个带有垂直滑块的应用程序,可以在不同的笑脸之间切换(从快乐到悲伤)我的问题是我不知道如何获取我的 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) 显示了相应的笑脸......提前谢谢你,对不起我的英语不好:)


繁华开满天机
浏览 198回答 3
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);

qq_花开花谢_0

此方法getCurrentItem将适用于您获得一个position,ViewPager fragment您可以像下面这样使用:((YourActivity)getActivity()).verticalViewPager.getCurrentItem());YourActivity是您确切使用ViewPagerwith 适配器的地方,并且getActivity()是Context您的参考,fragment并且不要忘记将verticalViewPagerobject 作为public访问说明符。

慕慕森

为什么不直接使用 viewpager 中的 getcurrentItem 方法。如下所示,将为您提供视图寻呼机的 pageNumber。 //  getting current Page  int page = mPager.getCurrentItem();
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java