RecyclerView

RecyclerView是一種新的視圖組,目標(biāo)是為任何基于適配器的視圖提供相似的渲染方式。它被作為ListView和GridView控件的繼承者,在最新的support-v7版本中提供使用。

RecyclerView架構(gòu),提供了一種插拔式的體驗(yàn),高度的解耦,異常的靈活,通過設(shè)置它提供的不同LayoutManager、ItemDecoration、ItemAnimator實(shí)現(xiàn)令人瞠目的效果
(總之ListView和GridView能做的RecyclerView都能做,并且能實(shí)現(xiàn)瀑布流效果)

ListView效果

使用方法:

  1. 在build.gradle中關(guān)聯(lián)庫:
  • compile 'com.android.support:recyclerview-v7:23.3.0'
    tip:此處的23.3.0不固定,于appcompat版本一致皆可
    (也可以在目錄結(jié)構(gòu)中找到app右鍵-open Module Settings-Dependencies-+-Library dependency-找到recyclerview的v7包,也要完成上面的tip)
  1. 準(zhǔn)備Item項(xiàng)的顯示方式 item_recyclerview.xml
    如:此例子中只放了ImageView和TextView
  2. **準(zhǔn)備適配器 **
public class MyRecyclerViewAdapter extends RecyclerView.Adapter<MyRecyclerViewAdapter.MyViewHolder>{
    private final Context context;
    private ArrayList<String> datas;
    /**構(gòu)造方法**/
    public MyRecyclerViewAdapter  (Context context,ArrayList<String> datas)    {    
        this.context=context;
        this.datas=datas;
    }

 class MyViewHolder extends RecyclerView.ViewHolder{
        private ImageView iv_icon;
        private TextView tv_title;
    
      public MyViewHolder (View itemView){
        super(itemView);
        iv_icon=(ImageView).findViewById(R.id.iv_icon);
        tv_title=(TextView).findViewById(R.id.tv_title);
       }
}
//相當(dāng)于getView方法中創(chuàng)建View和ViewHolder
  public MyViewHolder onCreateViewHolder(ViewGroup parent,int viewType){
        View itemView=View.inflate(context,R.layout.item_recyclerview,null);
        return new MyViewHolder(itemView);
}
//相當(dāng)于getView方法中綁定數(shù)據(jù)
  public MyViewHolder onCreateViewHolder(ViewGroup parent,int position){
        String data=datas.get(position); //根據(jù)位置在datas中獲取值
        holder.tv_title.setText(data);
}
    //得到item的條數(shù)
 public int getItemCount(){
        return datas.size();
}
}```

4.RecyclerViewActivity.java

private RecyclerView recyclerview;
private ArrayList<String> datas;
private MyRecyclerViewAdapter adapter;

onCreate()方法中:
{ initView();
initData();//準(zhǔn)備數(shù)據(jù)源
initAdapter();//為RecyclerView適配Adapter;
setLayoutManager();
}

private void initView(){
recyclerview=(RecyclerView)findViewById(R.id.recyclerview);
//此處注意 第一次使用時(shí)在xml中定義控件要用全包名即(<android.support.v7.widget.RecyclerView ... />)
}
//準(zhǔn)備數(shù)據(jù)源
private void initData(){
datas=new ArrayList<String> ();
for(int i=0;i<100;i++){ data.add("content"+i);}
}
//適配器
private void initAdapter(){
adapter=new MyRecyclerViewAdapter(RecyclerViewActivity.this,datas);
recyclerview.setAdapter(adapter);
}
//為recyclerview設(shè)置layoutManager
private void initAdapter(){
recyclerview.setLayoutManager(new LinearLayoutManager(MyRecyclerViewActivity.this,LinearLayout.VERTICAL,false));
}


* LinearLayoutManager(Context context,int orientation,boolean reverseLayout)
 參數(shù):context:上下文
            orientation:方向
            reverseLayout:是否倒轉(zhuǎn)

######RecyclerView的OnItemSelect
RecyclerView本身不支持點(diǎn)擊事件,要在Adapter中MyViewHolder類中實(shí)現(xiàn)
為了能在MyRecyclerViewAdapter中可以用點(diǎn)擊事件,可以定義接口來實(shí)現(xiàn)
在MyRecyclerViewAdapter中定義接口

public interface OnItemClickListener{
/**
*當(dāng)RecyclerView某個(gè)項(xiàng)被點(diǎn)擊時(shí)候回調(diào)
*@param view 點(diǎn)擊item的視圖
*@param data 點(diǎn)擊得到的數(shù)據(jù)
*/
public void onItemClick(View view,String data);
}
//實(shí)例化
private OnItemClickListener onItemClickListener;
//設(shè)置setter方法來設(shè)置RecyclerView某條的監(jiān)聽
public void setOnItemClickListener (OnItemClickListener onItemClickListener){
this.onItemClickListener=onItemClickListener;
}







最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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

  • RecyclerView 是Android L版本中新添加的一個(gè)用來取代ListView的SDK,它的靈活性與可替...
    Jason_andy閱讀 1,190評論 0 0
  • 這篇文章分三個(gè)部分,簡單跟大家講一下 RecyclerView 的常用方法與奇葩用法;工作原理與ListView比...
    LucasAdam閱讀 4,704評論 0 27
  • 一個(gè)新的工具類誕生了 DiffUtil 今天初學(xué)了一番 簡介 DiffUtil是support-v7:24.2....
    sirai閱讀 2,278評論 0 22
  • 體驗(yàn)入:今天晚上飯市網(wǎng)絡(luò)故障不能下電腦單,工作有些不暢通,晚上總結(jié)會(huì)大家一起互生如何用好手寫單 找核心:遇到問題找...
    熊毅濱1349閱讀 201評論 0 1
  • 那一年,我不知道的天意,遇見。 那個(gè)人,王子一般的孤傲溫暖, 可惜我連灰姑娘都不是。 那一年的那一季太短, 以至于...
    草木縈心閱讀 242評論 4 3

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