Получить currentItem из (Вертикальный) ViewPager - PullRequest
0 голосов
/ 01 марта 2019

У меня есть приложение с вертикальным ползунком для переключения между различными смайликами (от более счастливых до самых грустных). Моя проблема в том, что я не знаю, как мне получить currentItem моего ViewPager (когда пользователь использует определенный смайлик)

Я пробовал

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);

Если я хорошо, текстовое представление надругая активность должна отображать int между 1-6.(разные позиции), и если я не в порядке, отображается -50.

Я не понимаю, что я делаю неправильно, так как я установил verticalVP.setCurrentItem (3), отображается соответствующий смайлик... Заранее спасибо и извините за мой плохой английский:)

Ответы [ 3 ]

0 голосов
/ 01 марта 2019

почему бы вам просто не использовать метод getcurrentItem из viewpager.как показано ниже, даст вам номер страницы пейджера просмотра.

 //  getting current Page
 int page = mPager.getCurrentItem();
0 голосов
/ 01 марта 2019

Этот метод getCurrentItem поможет вам получить position из ViewPager fragment, и вы можете использовать его следующим образом:

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

YourActivity - это именно то место, где вы находитесьиспользование ViewPager с адаптером и getActivity() - это Context в качестве ссылки на fragment, и не забудьте сделать объект verticalViewPager в качестве public спецификатора доступа.

0 голосов
/ 01 марта 2019
**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);
...