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

1.導(dǎo)入

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

2.準備工作(間隔)

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)系作者
  • 序言:七十年代末斗搞,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子眷昆,更是在濱河造成了極大的恐慌,老刑警劉巖亚斋,帶你破解...
    沈念sama閱讀 211,123評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件帅刊,死亡現(xiàn)場離奇詭異纸泡,居然都是意外死亡赖瞒,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評論 2 384
  • 文/潘曉璐 我一進店門吧兔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來袍嬉,“玉大人境蔼,你說我怎么就攤上這事》晗恚” “怎么了?”我有些...
    開封第一講書人閱讀 156,723評論 0 345
  • 文/不壞的土叔 我叫張陵拼苍,是天一觀的道長调缨。 經(jīng)常有香客問我吆你,道長,這世上最難降的妖魔是什么妇多? 我笑而不...
    開封第一講書人閱讀 56,357評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮者祖,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘蜓耻。我一直安慰自己,他們只是感情好刹淌,可當我...
    茶點故事閱讀 65,412評論 5 384
  • 文/花漫 我一把揭開白布讥耗。 她就那樣靜靜地躺著有勾,像睡著了一般古程。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上挣磨,一...
    開封第一講書人閱讀 49,760評論 1 289
  • 那天趋急,我揣著相機與錄音,去河邊找鬼呜达。 笑死,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的挤忙。 我是一名探鬼主播,決...
    沈念sama閱讀 38,904評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼册烈,長吁一口氣:“原來是場噩夢啊……” “哼婿禽!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起扭倾,我...
    開封第一講書人閱讀 37,672評論 0 266
  • 序言:老撾萬榮一對情侶失蹤膛壹,失蹤者是張志新(化名)和其女友劉穎驾中,沒想到半個月后模聋,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,118評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡持痰,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,456評論 2 325
  • 正文 我和宋清朗相戀三年侄柔,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片暂题。...
    茶點故事閱讀 38,599評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡薪者,死狀恐怖纵苛,靈堂內(nèi)的尸體忽然破棺而出言津,到底是詐尸還是另有隱情,我是刑警寧澤悬槽,帶...
    沈念sama閱讀 34,264評論 4 328
  • 正文 年R本政府宣布初婆,位于F島的核電站蓬坡,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏萨赁。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,857評論 3 312
  • 文/蒙蒙 一杖爽、第九天 我趴在偏房一處隱蔽的房頂上張望紫皇。 院中可真熱鬧,春花似錦坝橡、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至赖阻,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間火欧,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評論 1 264
  • 我被黑心中介騙來泰國打工赶盔, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留榆浓,地道東北人于未。 一個月前我還...
    沈念sama閱讀 46,286評論 2 360
  • 正文 我出身青樓烘浦,卻偏偏與公主長得像,于是被迫代替她去往敵國和親闷叉。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,465評論 2 348

推薦閱讀更多精彩內(nèi)容

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