0

У меня есть recyclerview и кнопка плавающего действия в моем основном действии. У меня есть два фрагмента зрителя, у которых нет ничего, кроме linearlayout. В addOnPageChangeListener, я добавляю слушателя, который заполняет recyclerview и реализует onItemClick на кнопке с плавающим действием при выборе TAB 1 и только заполняет recyclerview и скрывает fab при выборе TAB 2. В моих двух фрагментах у меня ничего, кроме раздутых соответствующих макетов.addOnPageChangeListener не работает в первый раз

Когда я открываю действие, recyclerview пуст. Когда я выбираю другую вкладку, recyclerview начинает работать и заполняет другую вкладку TAB 2. Когда я выбираю TAB 1 сейчас, он также заселяется так, как ожидалось, и clickListener на fab также работает так, как ожидалось.

Но почему в первом случае рециркуляция пуста. Салфетка также не работает. Любые решения? Я не создаю recyclerview в каждом из фрагментов, так как я должен обновить его с помощью кнопки fab. И моя фабричная кнопка находится в mainActivity. Я не хочу помещать кнопку fab в первый фрагмент только потому, что это означает, что анимация по умолчанию по умолчанию не будет, когда прокручивается через фрагменты.

http://pastebin.com/rrumZyf4

+0

показать код также –

+0

Код довольно длинный. Пожалуйста, предложите общую технику, чтобы показать просмотр ресайклера при открытии активности. –

+0

Вы инициализируете свой код в методе onCreate()? –

ответ

0

Кажется, вы загружаете данные с сервера только внутри метода onPageSelected. Это не будет срабатывать при первом запуске viewpager. Только при изменении страницы. Вам придется выполнять загрузку исходных данных вне этого метода.

+0

Да, вы поняли. Да, я могу загружать данные вне метода, но есть ли другой лучший вариант, потому что это означало бы повторение большого количества кода. и в чем причина того, что вкладка не работает? –

+0

Поместите это как отдельный метод. Назовите его там, где вам нужно. – Roshan

+0

Перезагрузка данных с сервера каждый раз, когда была изменена вкладка, является, кстати, плохим вариантом. – Roshan

0

Немного поздно вступить в партию, но вы можете сделать что-то вроде этого ..

mPager.addOnPageChangeListener(new OnPageChangeListener() { 

      boolean first = true; 

      @Override 
      public void onPageScrolled(final int position, final float positionOffset, 
        final int positionOffsetPixels) { 
       if (first && positionOffset == 0 && positionOffsetPixels == 0){ 
        onPageSelected(0); 
        first = false; 
       } 
      } 

      @Override 
      public void onPageSelected(final int position) { 
       setItem(item.get(position)); 
      } 

      @Override 
      public void onPageScrollStateChanged(final int state) { 

      } 
     }); 

метод Внутри onPageScrolled, вы можете проверить, является ли его первый элемент или нет и установить страницу соответственно. Надеюсь, это решает вашу проблему.