0

我有一個片段與分頁適配器實現tablayout ...每個標籤有一些項目的回收站視圖(所有recylerviews相同的recyler視圖適配器)...通過實施OnItemClick監聽器點擊每個項目調用一個活動,實現與fragmentStatePagerAdapter viewpager,以顯示回收站查看項目...基於滑動tablayout viewpager顯示上一個或下一個標籤項... 每個項目的數據存儲在一個數組列表。 當我clcking在當前標籤一個項目它喜歡我我點擊下一個選項卡項目在同一位置 tablayput片段:點擊從下一個標籤項目的標籤迭代響應

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和TwoFragment和...是相似的:

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

回收觀點適配器:

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

回答

0

爲解決這個問題,我做了我的RvAdapter類在每一個內部和私有類標籤片段:

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

//...and keep remaning