recyclerview 和 listview 一樣都是通過維護少量的view來展示大量的資料,不同的是recyclerview提供了一種插拔式的體驗,高度解耦,同時使用起來更加靈活。
recyclerview可以通過設定layoutmanager、oritation、itemanimation、itemdecoration來實現各種效果。
一、layoutmanager主要控制item的顯示方式,用來確定每乙個item如何進行排列擺放,何時展示和隱藏。**或重用乙個view的時候,layoutmanger會像介面卡請求新的資料來替換舊的資料,這種機制避免建立過多的view和頻繁的呼叫findviewbyid方法(和listview原理類似)
。1、linearlayoutmanager 普通listview布局列表
2、gridlayoutmanager gridview布局列表
3、staggeredgridlayoutmanager 瀑布流布局列表
二、setoritation()設定item的排列方式是橫向還是豎向
三、itemanimation設定item的動畫效果預設是有動畫效果的
四、itemdecoration設定item的分割線,可以自定義
五、adapter需要繼承recyclerview.adapter的介面卡,目的和baseadapter作用類似
recyclerview的使用:
1、引入recyclerview依賴包
2、在布局檔案中引入recyclerview
3、adapter的書寫
4、在activity或fragment中獲取recyclerview並宣告layoutmanager、adapter等相關屬性
1、引入依賴包
dependencies2、引入布局檔案
3、adapter的實現android
:id=
"@+id/******recyclerview"
android
:layout_width=
"match_parent"
android
:layout_height=
"wrap_content"
>
public class recycleadapter extends recyclerview.adapter4、在activity中獲取recyclerview/*** 自定義viewhold 內容viewholder
*/public static class contentviewholder extends recyclerview.viewholder
}/**
* headerviewholder
*/public static class headerviewholder extends recyclerview.viewholder
}/**
* footviewholder
*/public static class footviewholder extends recyclerview.viewholder
}/**
* 判斷當前view是不是headerview
*@param
position
*@return
*/public boolean
isheaderview(int position)
public boolean
isfootview(int position)
/*** 當前item的型別
*@param
position
*@return
*/@override
public int
getitemviewtype(int position) else if(mfootcount!=0&&position >= mheadercount+subjects.length)else
}/**
* 建立新view 被layoutmanage所呼叫
*@param
parent
*@param
viewtype
*@return
*/@override
public recyclerview.viewholder oncreateviewholder(viewgroup parent, int viewtype) else if (viewtype == item_type_content
)else if (viewtype == item_type_foot
)return null;
// view view = layoutinflater.from(parent.getcontext()).inflate(r.layout.item_recyclerview,parent,false);
// contentviewholder contentviewholder = new contentviewholder(view);
// return contentviewholder;
}/**
* 繫結資料
*@param
holder
*@param
position
*/@override
public void
onbindviewholder(recyclerview.viewholder holder, int position) else if(holder instanceof footviewholder)else if(holder instanceof headerviewholder)
}/**
* item 數量
*@return
*/@override
public int
getitemcount()
}
initview();mlayoutmanager = new linearlayoutmanager(this);
gridlayoutmanager = new gridlayoutmanager(this,
3);mlayoutmanager.setorientation(linearlayout.vertical
);// mrecyclerview.setlayoutmanager(mlayoutmanager);
mrecyclerview.setlayoutmanager(gridlayoutmanager);
madapter = new recycleadapter(this,
subjects);
mrecyclerview.setadapter(madapter);
gridlayoutmanager.setspansizelookup(new gridlayoutmanager.spansizelookup()
});}
private void
initview()
RecyclerView的簡單使用
recyclerview基本使用 簡單實現乙個recyclerview的下拉列表,每一條可以顯示一張和一段文字 先新增依賴build.gradle implementation com.android.support recyclerview v7 28.0.0 首先是最外層布局activity m...
RecyclerView 簡單的區域性重新整理
1,adapter裡新增 更新某乙個item param position 需要更新的第幾項 param type 跟新的內容 自定定義 邏輯很簡單就是修改內容之後,更新就行了 public void updateitem int position,string type notifydataset...
RecyclerView的特簡單使用 狸菇涼
recycleview的特簡單使用,資料是本地的 瀑布流 recyclerview 的使用 上拉重新整理,下拉載入更多 本地資料 分割線。public class mainactivity extends implements swiperefreshlayout.onrefreshlistener...