1

конца .: Я пытаюсь Просмотр RecyclerView внутри PagerViewRecyclerView в не связанном с просмотрами страниц показывает список

Проблема: RecyclerView не отображаются

Кроме того, я готов RecyclerView in PagerView Question зная, что я должен иметь другой фрагмент для Recycler и я его

NB:

  • PagerView работает хорошо, как это отобразить один TextView
  • RecyclerView был отображается нормально до того просмотра страницы

Изменения, которые я сделал, который после изменений появляется проблема:

  • Перемещение RecyclerView на новый фрагмент класса

ExampleRecyclerViewFragment

public class ExampleRecyclerViewFragment extends Fragment { 
    public statlic ExampleAdapter adapter; 
    List<MainExampleObject> exampleList = new ArrayList<>(); 
    public Example example = new Example(); 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     View rootView = inflater.inflate(R.layout.fragment_two, container, false); 

     RecyclerView exampleRecyclerView = (RecyclerView) rootView.findViewById(R.id.ExampleRecyclerView); 

     exampleList = new ArrayList<>(); 

     adapter = new ExampleAdapter(exampleList); 
     LinearLayoutManager llm = new LinearLayoutManager(getActivity()); 
     llm.setSmoothScrollbarEnabled(true); 
     exampleRecyclerView.setScrollbarFadingEnabled(true); 
     exampleRecyclerView.setLayoutManager(llm); 
     exampleRecyclerView.setAdapter(adapter); 

     return rootView; 
    } 

    public void fetchExamples(final DataSnapshot Examples) { 
     //noinspection StatementWithEmptyBody 
     if (Examples.hasChild("Method 2")) { 

     } else { 

      Examples.getRef().child("Method 1").addChildEventListener(new ChildEventListener() { 
       @Override 
       public void onChildAdded(DataSnapshot dataSnapshot, String s) { 
        example.setStepName(String.valueOf(dataSnapshot.getKey())); 

        for (DataSnapshot childSnapshot : dataSnapshot.child("Code").getChildren()) { 
         example.addCode(String.valueOf(childSnapshot.getValue())); 
        } 

        for (DataSnapshot childSnapshot : dataSnapshot.child("Explaination").getChildren()) { 
         example.addExplanation(String.valueOf(childSnapshot.getValue())); 
        } 
        example.addExample(); 
        exampleList.add(example.getExampleObject()); 
       } 

       @Override 
       public void onChildChanged(DataSnapshot dataSnapshot, String s) { 

       } 

       @Override 
       public void onChildRemoved(DataSnapshot dataSnapshot) { 

       } 

       @Override 
       public void onChildMoved(DataSnapshot dataSnapshot, String s) { 

       } 

       @Override 
       public void onCancelled(FirebaseError firebaseError) { 

       } 
      }); 
     } 
    } 

    public ExampleRecyclerViewFragment() { 
     // Required empty public constructor 
    } 
} 

ViewPagerAdapter

class ViewPagerAdapter extends FragmentPagerAdapter { 
    private final List<Fragment> mFragmentList = new ArrayList<>(); 
    private final List<String> mFragmentTitleList = new ArrayList<>(); 

    ViewPagerAdapter(FragmentManager manager) { 
     super(manager); 
    } 

    @Override 
    public Fragment getItem(int position) { 
     return new ExampleRecyclerViewFragment(); 
    } 

    @Override 
    public int getCount() { 
     return mFragmentTitleList.size(); 
    } 

    void addFragment(String title) { 
     //mFragmentList.add(fragment); 
     mFragmentTitleList.add(title); 
    } 

    @Override 
    public CharSequence getPageTitle(int position) { 
     return mFragmentTitleList.get(position); 
    } 
} 

fragment_two.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       xmlns:tools="http://schemas.android.com/tools" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:orientation="vertical" 
       tools:context=".ExampleRecyclerViewFragment" 
    > 

    <android.support.v7.widget.RecyclerView 
     android:id="@+id/ExampleRecyclerView" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     /> 

    <TextView 
     android:text="TextView" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/textView" 
     /> 

</LinearLayout> 

Я думаю, что код будет нужен, если кому-то нужен, чтобы увидеть другой класс, просто дайте мне знать, с комментарием

Извините, что забыл упомянуть, что fetchExamples() вызывается в главном класс в методе называется в OnCreate

new ExampleRecyclerViewFragment().fetchExamples(dataSnapshot.child("Examples")); 

Большое спасибо

ответ

1

Проблема с тем, что вы вызываете fetchExamples без ведома, была ли завышена ваш фрагмент или нет. Вы можете использовать eventBus для отправки объекта dataSnapshot в ваш фрагмент и вызвать там fetchExamples. Код в главном классе будет,

EventBus.getDefault().postSticky(dataSnapshot.child("Examples")); 

и в вашем фрагменте сделать,

@Subscribe(sticky = true, threadMode = ThreadMode.MAIN) 
public void onEvent(DataSnapshot examples) { 
    fetchExamples(examples); 
} 

@Override 
public void onStop() { 
    EventBus.getDefault().unregister(this);  
    super.onStop(); 
+0

Спасибо большое за ваш ответ и объяснение, я думаю, что это будет работать, но есть небольшие вещи " не может его решить »(sticky, ThreadMode, getDefault), я понятия не имею о eventBus, поэтому бы вы мне помогли с этим –

+1

Конечно. EventBus - это просто библиотека для фрагмента свободной активности и активности. Обычно вы пишете интерфейс для отправки данных из активности или основного фрагмента в фрагмент потребителя. EventBus заменяет это без необходимости объявления класса. Sticky означает, что потребительский фрагмент не должен присутствовать во время публикации данных. ThreadMode просто сообщает, что обновление происходит в потоке Main/UI. –

+1

http: // greenrobot.org/eventbus/см. это для получения дополнительной информации о событиях –

 Смежные вопросы

  • Нет связанных вопросов^_^