RecycleView的使用,并添加子item的點擊事件

1.導(dǎo)入

compile 'com.android.support:recyclerview-v7:25.0.2'

2.準(zhǔn)備工作(間隔)

3.開始使用 - xml 的編寫 - 簡單的Adapter編寫

/** 
  * author Phyooos 
  * date 16/5/3. 
  */
public class CrAdapter extends RecyclerView.Adapter<CrViewHodle>{
      ArrayList<String> mdata ; 
      private Context mContext; 
      private LayoutInflater inflater;  
      //構(gòu)造傳參 
      public CrAdapter(Context mContext ,ArrayList<String> mdata) { 
          this.mdata = mdata;
          this.mContext = mContext; this.inflater = LayoutInflater.from(mContext); 
      } 
      //綁定數(shù)據(jù) 
      @Override 
      public void onBindViewHolder(CrViewHodle holder, int position) { 
          holder.textView.setText(mdata.get(position)); 
      }  
      //加載iten布局并創(chuàng)建ViewHolder 
      @Override 
      public CrViewHodle onCreateViewHolder(ViewGroup parent, int viewType) { 
           View view = inflater.inflate(R.layout.item_recycle,parent,false); 
           CrViewHodle hodle = new CrViewHodle(view); return hodle; 
      } 
       //條目總數(shù) 
       @Override 
       public int getItemCount() { 
           return mdata.size(); 
       }           
}  
//各個控件聲明,初始化
class CrViewHodle extends RecyclerView.ViewHolder { 
     TextView textView; 
     public CrViewHodle(View itemView) { 
           super(itemView); 
            textView = (TextView) itemView.findViewById(R.id.text); 
     }
}

4.在Activity中使用

//獲得
CrAdapter crAdapter = new CrAdapter(this,mDatas); 
//設(shè)置
CrAdapter mRecyclerView.setAdapter(crAdapter); 
//Context VERTICAL或者HORIZONTAL的樣式 
manager = new LinearLayoutManager(this,LinearLayoutManager.VERTICAL,false); 
mRecyclerView.setLayoutManager(manager); 
//設(shè)置Item動畫 
mRecyclerView.setItemAnimator(new DefaultItemAnimator()); 
//設(shè)置間隔 Context 以及mRecyclerView樣式,與上面一致 
mRecyclerView.addItemDecoration(new DividerItemDecoration(this,DividerItemDecoration.VERTICAL_LIST));```

###5.添加點擊事件這個大概有2種比較方便的方法來實現(xiàn)但是個人比較傾向于在onBindViewHolder中給控件帶上參數(shù)來使用setOnClickListener
例子:
1)定義一個接口

/**

  • @author: phyooos on 16.6.22 09:58.
  • @E-mail: phyooos@163.com
    */
    public interface OnRecycleItemListener {
    void OnRecycleItemClick(View v,Object o);
    }
我發(fā)現(xiàn)Object o每一次都需要轉(zhuǎn)化,很麻煩也可以這樣使用,

public interface OnRecycleItemListener <T>{
void OnRecycleItemClick(View v,T o);
}


PS;參數(shù)什么的自己定義即可,用什么就定義什么
2)在onBindViewHolder給要添加的view設(shè)置點擊事件

@Override
public void onBindViewHolder(TypeViewHolder holder, int position) {
ActivityItemModel itemModel = model.getDatalist().get(position);
holder.textView.setText(itemModel.getName());
holder.textView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
listener.OnRecycleItemClick(v,itemModel);
}
});
}


使用setOnClickListener并在其中調(diào)用接口中的OnRecycleItemClick
3)那么上面listener對象需要定義出來

private OnRecycleItemListener listener;


4)最后一步就是定義一個對外開放的方法

public void addRecycleItemListener(OnRecycleItemListener listener){
this.listener = listener;
}```
到此為止,你可以在activity中給創(chuàng)建出來的adapter實例添加點擊事件,并在回調(diào)中處理各種事件

5)在activity中使用

//在activity中對recycleView的adapter(listAdapter)添加子項目的點擊事件 
listAdapter.addRecycleItemListener(listener);

-------------------------------------------------------------
OnRecycleItemListener<Prize> listener = new OnRecycleItemListener<Prize>() { 
    @Override 
    public void OnRecycleItemClick(View v, final Prize p) {       
          switch (v.getId()){ 
              case R.id.act_list_edit: 
              //在這里處理Item的點擊事件即可 
              break; 
          } 
    }
};```
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,057評論 25 709
  • Tangram是阿里出品、用于快速實現(xiàn)組合布局的框架模型,在手機(jī)天貓Android&iOS版 內(nèi)廣泛使用 該框架提...
    wintersweett閱讀 3,564評論 0 1
  • RecyclerView側(cè)重的是布局的靈活性,雖說可以替代ListView但是連基本的點擊事件都沒有,這篇文章就來...
    JohnKang閱讀 1,605評論 1 1
  • RecyclerView使用 RecyclerView 是 Android Loillpop (5.0)版本中新添...
    MartinDong閱讀 909評論 0 0
  • ——每一個失眠的靈魂下都有一顆掙扎著求上進(jìn)的心。 曾經(jīng),在無憂的年華里聽到別人一臉無奈的談失眠的痛苦,很天真的不以...
    猶俏閱讀 443評論 0 0

友情鏈接更多精彩內(nèi)容