首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取(垂直)ViewPager的currentItem

获取(垂直)ViewPager的currentItem
EN

Stack Overflow用户
提问于 2019-03-01 17:01:57
回答 3查看 86关注 0票数 0

我有一个应用程序的垂直滑块来切换不同的笑脸(从快乐到最悲伤)我的问题是,我不知道如何才能获得我的ViewPager的currentItem (当用户在一个特定的笑脸)

我试过了

代码语言:javascript
复制
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;
         }
});

在另一个活动中(我必须存储当前选择的笑脸):

代码语言:javascript
复制
currentSmileyInt = mPreferences.getInt(PREF_KEY_CURRENT_SMILEY,-50);

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

如果我做得很好,其他活动上的文本视图应该会显示一个介于1-6之间的整数。(不同的位置),如果我不好,它显示-50。

我不知道我做错了什么,因为我设置了verticalVP.setCurrentItem(3),相应的笑脸符号会显示出来……提前感谢您,并为我糟糕的英语表示抱歉:)

EN

回答 3

Stack Overflow用户

发布于 2019-03-01 17:35:53

代码语言:javascript
复制
**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);
票数 1
EN

Stack Overflow用户

发布于 2019-03-01 18:22:22

为什么不直接使用viewpager中的getcurrentItem方法呢?如下所示,将为您提供视图分页程序的pageNumber。

代码语言:javascript
复制
 //  getting current Page
 int page = mPager.getCurrentItem();
票数 0
EN

Stack Overflow用户

发布于 2019-03-01 18:45:11

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

代码语言:javascript
复制
((YourActivity)getActivity()).verticalViewPager.getCurrentItem()); 

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54941153

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档