2017-09-23 19 views
0

我使用標籤活動,其中有3選項卡一個選項卡包含列表RecylerView,如果我點擊的名單應該在標籤式活動打開新的標籤頁或片段recylerview的onclick列表視圖中打開新的片段

這是我的適配器類

public class tabAdapter extends RecyclerView.Adapter<tabAdapter.MyViewHolder> { 

private LayoutInflater lf; 


List<information> data = Collections.emptyList(); 

private Context context; 




public tabAdapter(Context context,List<information> data){ 

    this.context=context; 
    lf=LayoutInflater.from(context); 
    this.data=data; 
} 


@Override 
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 

    View view = lf.from(parent.getContext()).inflate(R.layout.res,parent,false); 

    MyViewHolder ms = new MyViewHolder(view); 
    return ms; 
} 

@Override 
public void onBindViewHolder(MyViewHolder holder, int position) { 
    information info=data.get(position); 

    holder.tx.setText(info.str); 
    holder.tm.setImageResource(info.img); 


} 

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


class MyViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener { 

    TextView tx; 
    ImageView tm; 
    public MyViewHolder(View itemView) { 
     super(itemView); 
     itemView.setOnClickListener(this); 
     tx = (TextView) itemView.findViewById(R.id.ids); 
     tm = (ImageView) itemView.findViewById(R.id.imag); 
    } 

    @Override 
    public void onClick(View view) { 
     context.startActivity(new Intent(context,tab3.class)); 

    } 
} 
} 
+0

到底是什麼問題了嗎?你的代碼在哪裏失敗? – Binarus

+0

onClick方法m直接調用不工作,當我嘗試與不同的活動其工作 –

+0

所以沒有得到如何調用onClick方法的新片段如何做? –

回答

0

在RecyclerView適配器

定義監聽器,並覆蓋在你的活動,以更改標籤

public class tabAdapter extends RecyclerView.Adapter<tabAdapter.MyViewHolder> { 

    private LayoutInflater lf; 

    interface MyListener { 
     void changeTabs(); 
    } 

    MyListener listener; 

    public void setListener(MyListener listener) { 
     this.listener = listener; 
    } 

    List<information> data = Collections.emptyList(); 

    private Context context; 


    public tabAdapter(Context context, List<information> data) { 

     this.context = context; 
     lf = LayoutInflater.from(context); 
     this.data = data; 
    } 


    @Override 
    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 

     View view = lf.from(parent.getContext()).inflate(R.layout.res, parent, false); 

     MyViewHolder ms = new MyViewHolder(view); 
     return ms; 
    } 

    @Override 
    public void onBindViewHolder(MyViewHolder holder, int position) { 
     information info = data.get(position); 

     holder.tx.setText(info.str); 
     holder.tm.setImageResource(info.img); 
     holder.itemView.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       if (listener != null) { 
        listener.changeTabs(); 
       } 
      } 
     }); 
    } 

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


    class MyViewHolder extends RecyclerView.ViewHolder { 

     TextView tx; 
     ImageView tm; 

     public MyViewHolder(View itemView) { 
      super(itemView); 
      itemView.setOnClickListener(this); 
      tx = (TextView) itemView.findViewById(R.id.ids); 
      tm = (ImageView) itemView.findViewById(R.id.imag); 
     } 

    } 
} 
上覆蓋

在您的活動是這樣的:

List<information> data = new ArrayList<>(); 
.... 
    tabAdapter tabAdapter = new tabAdapter(data); 
    tabAdapter.setListener(new MyListener() { 
     @Override 
     public void changeTabs() { 
      // change tabs 
     } 
    }); 
+0

先生當我點擊recylerview listitem然後只想去不同的片段 –

+0

@ShubhamDangare是的,它會爲你做,但因爲你不能從RecyclerView適配器訪問你的片段,我們使用Listener並從活動覆蓋它 –