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