0

Ich habe ein Fragment mit Fragment Pager Adapter implementiert Tablayout ... jede Registerkarte hat eine Recycler-Ansicht mit einigen Elementen (gleiche Recyler Ansicht Adapter für alle Recylerviews) ... durch die Implementierung von OnItemClick Listener Klicken Sie auf jedes Element, rufen Sie eine Aktivität auf, die einen Viewpager mit fragmentStatePagerAdapter implementiert, um Recycleransichtselemente anzuzeigen ... basierend auf dem Stripe von tablayout viewpager zeigt vorherige oder nächste Registerkartenelemente an ... Daten jedes Elements werden in einer Arraylist gespeichert. , wenn ich in der aktuellen Registerkarte auf ein Element bin clcking es Ich klicke auf nächsten Reiter Artikel in einer gleichen Position tablayput Fragment mag:Klicken Sie auf Tab Itemes Antwort von nächsten Tab Einträge

viewPager = (ViewPager) view.findViewById(R.id.viewpager); 
    //setupViewPager(viewPager); 
    MyFragmentPagerAdapter adapter = new MyFragmentPagerAdapter(getChildFragmentManager(),getActivity()); 

    adapter.addFrag(new OneFragment(), "title1"); 
    adapter.addFrag(new TwoFragment(), "title2"); 
    adapter.addFrag(new ThreeFragment(), "title3"); 
    viewPager.setAdapter(adapter); 
    tabLayout = (TabLayout) view.findViewById(R.id.tabs); 
    tabLayout.setupWithViewPager(viewPager); 

OneFragment und TwoFragment und ... sind ähnlich:

rv=(RecyclerView) view.findViewById(R.id.rv); 

     StaggeredGridLayoutManager sglm = new StaggeredGridLayoutManager(2,StaggeredGridLayoutManager.VERTICAL); 
     rv.setLayoutManager(sglm); 
     rv.setHasFixedSize(true); 
persons = new ArrayList<>(); 



      persons.add(new Person("name", "age","email","phone","resume", R.drawable.photo)); 
    persons.add(new Person("name", "age","email","phone","resume", R.drawable.photo)); 
    . 
    . 
    .  

for (int j=0; j < persons.size() ;j++){ 
      PersonItem personItem = new PersonItem(); 
      personItem.setName(persons.get(j).name); 
      personItem.setAge(persons.get(j).age); 
      personItem.setEmail(persons.get(j).email); 
      personItem.setPhone(persons.get(j).phone); 
      personItem.setResume(persons.get(j).resume); 
      personItem.setImageId(persons.get(j).photoId); 
      personList1.addItem(personItem); 

RVAdapter adapter = new RVAdapter(getContext(),persons); 


     adapter.setOnItemClickListener(new RVAdapter.OnItemClickListener() { 
      @Override 
      public void onItemClick(View view, int position) { 
       int pos = position; 



       Bundle bundle = new Bundle(); 
       bundle.putSerializable("person", personList1); 
       Intent intent = new Intent(getContext(), 
         MyActivity.class); 
       intent.putExtras(bundle); 
       intent.putExtra("pos", pos); 

       startActivity(intent); 

      } 

     }); 
     rv.setAdapter(adapter); 

Recycler Ansicht Adapter:

public class RVAdapter extends RecyclerView.Adapter<RVAdapter.PersonViewHolder> { 
    private Context mContext; 
    private static OnItemClickListener listener; 

    //AdapterView.OnItemClickListener listener; 
    // Define the listener interface 
    public interface OnItemClickListener { 
     void onItemClick(View itemView, int position); 
    } 
    // Define the method that allows the parent activity or fragment to define the listener 
    public void setOnItemClickListener(OnItemClickListener listener) { 
     this.listener = listener; 
    } 


    public static class PersonViewHolder extends RecyclerView.ViewHolder { 

     CardView cv; 
     TextView personName; 
     TextView personAge; 
     ImageView personPhoto; 

     PersonViewHolder(final View itemView) { 
      super(itemView); 
      cv = (CardView)itemView.findViewById(R.id.cv); 
      personName = (TextView)itemView.findViewById(R.id.person_name); 
      personAge = (TextView)itemView.findViewById(R.id.person_age); 
      personPhoto = (ImageView)itemView.findViewById(R.id.person_photo); 

      // Setup the click listener 
      itemView.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        // Triggers click upwards to the adapter on click 
        if (listener != null) 
         listener.onItemClick(itemView, getLayoutPosition()); 
       } 
      }); 
     } 
    } 

    List<Person> persons; 

    public RVAdapter(Context context , List<Person> persons){ 
     this.persons = persons; 
     mContext = context; 
    } 

    @Override 
    public void onAttachedToRecyclerView(RecyclerView recyclerView) { 
     super.onAttachedToRecyclerView(recyclerView); 
    } 

    @Override 
    public PersonViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) { 
     View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item, viewGroup, false); 
     PersonViewHolder pvh = new PersonViewHolder(v); 
     return pvh; 
    } 

    @Override 
    public void onBindViewHolder(PersonViewHolder personViewHolder, int i) { 
     personViewHolder.personName.setText(persons.get(i).name); 
     personViewHolder.personAge.setText(persons.get(i).age); 
     personViewHolder.personPhoto.setImageResource(persons.get(i).photoId); 
    } 

    @Override 
    public int getItemCount() { 
     return persons.size(); 
    } 
} 

Antwort

0

zur Lösung dieses Problems ich meine RvAdapter Klasse als innere und private Klasse in jedem gemacht habe Tab-Fragmente:

private static class RVAdapter extends RecyclerView.Adapter<RVAdapter.PersonViewHolder> { 

//...and keep remaning 
Verwandte Themen