2

У меня есть три вкладки. Для тестирования я устанавливаю один и тот же фрагмент для всех трех вкладок. Фрагмент имеет вид recycler. Я могу просматривать просмотр ресайклера только в первом фрагменте.Невозможно использовать просмотры recycler в нескольких вкладках

активность Код:

 ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager()); 
     adapter.addFragment(new TrialsFragment(), getString(R.string.camps)); 
     adapter.addFragment(new TrialsFragment(), getString(R.string.trials)); 
     adapter.addFragment(new TrialsFragment(), getString(R.string.events)); 
     viewPager.setAdapter(adapter); 

фрагмент кода:

@Override 
    public void onActivityCreated(Bundle savedInstanceState) { 
     super.onActivityCreated(savedInstanceState); 
     recyclerView = (RecyclerView) getActivity().findViewById(R.id.recycler); 
     adapter = new TrialsRecyclerViewAdapter(); 
     recyclerView.setLayoutManager(new LinearLayoutManager(getActivity())); 
     recyclerView.setAdapter(adapter); 
    } 

код адаптера:

public class TrialsRecyclerViewAdapter extends RecyclerView.Adapter<TrialsRecyclerViewAdapter.ViewHolder> { 

    String[] names = {"Sample Name","Sample Name","Sample Name","Sample Name","Sample Name"}; 
    String[] regNos ={"12345678","12345678","12345678","12345678","12345678"}; 

    @Override 
    public TrialsRecyclerViewAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
     CardView cv = (CardView) LayoutInflater.from(parent.getContext()) 
       .inflate(R.layout.trial_card, parent, false); 
     return new ViewHolder(cv); 
    } 

    @Override 
    public void onBindViewHolder(TrialsRecyclerViewAdapter.ViewHolder holder, int position) { 
     final CardView cardView = holder.cardView; 

     TextView name = (TextView)cardView.findViewById(R.id.trial_name); 
     TextView regNumber = (TextView)cardView.findViewById(R.id.trial_start_end); 
     name.setText(names[position]); 
     regNumber.setText(regNos[position]); 

     cardView.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
      } 
     }); 
    } 

    @Override 
    public int getItemCount() { 
     return names.length; 
    } 

    public static class ViewHolder extends RecyclerView.ViewHolder 
    { 
     private CardView cardView; 
     public ViewHolder(CardView v) 
     { 
      super(v); 
      cardView = v; 
     } 
    } 
} 

Когда активность запускается, RecyclerView виден только первой вкладке. Если я прокручу вкладки, то она станет видимой только на второй вкладке.

Я наблюдал следующее сообщение об ошибке при отладке его:

адаптер не прилагается; пропуская макет

ответ

4
recyclerView = (RecyclerView) getActivity().findViewById(R.id.recycler); 

Это очень неправильно. Переместите свою логику от onActivityCreated() до onViewCreated() и получите фрагментRecyclerView. Каждый фрагмент должен создавать свой собственный RecyclerView в onCreateView(), который будет содержимым этой страницы ViewPager.

+0

Большое спасибо ..! Это сработало. Принять ответ через 10 минут. –