2

我有三个选项卡。出于测试目的,我将所有三个选项卡设置为相同的片段.Fragment具有回收站视图。我只能在第一个片段中查看回收站视图。无法在多个选项卡中使用回收站视图

活动代码:

 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。每个片段应该在onCreateView()中创建自己的RecyclerView,这将是ViewPager该页面的内容。

+0

非常感谢..!有效。 10分钟后会接受答案。 –

相关问题