LtRecyclerView:自带上拉下拉,能增加头条目和尾条目的RecyclerView
LtRecyclerView:自帶上拉下拉,能增加頭條目和尾條目的RecyclerView
點擊查看2.x版本,功能更強大
主要功能:
- 自帶上拉加載和下拉刷新
- 可以添加100條頭條目和尾條目(其實是可以無限的)
- 可以設置沒有條目時展示的View
- 示例:
Android Studio使用方法
-
1.下載arr包:https://pan.baidu.com/s/1f0H2Ti-GDCp_xyFTfM8Zhw
-
2.引用
把ltviews.aar放入libs文件夾
在app的Build.Gradle中寫:
在app的Build.Gradle中引用:
compile name: 'ltviews-1.3.2', ext: 'aar'和
compile 'com.android.support:recyclerview-v7:25.3.1'并點擊按鈕重新構建
- 3.在XML中使用(或者直接new LTRecyclerView())
-
4.設置展示的方式
**rv.setRVOrientation(LtrvOrientation ltrvOrientation);**支持ListView類型:'LtrvOrientation.VERTICAL_LISTVIEW’和GridView類型:‘LtrvOrientation.VERTICAL_GRIDVIEW’.
如果是多列的,可以使用重載的方法(最后一個參數表示要顯示多少列) -
5.適配器類需要繼承LtAdapter,其中的方法都和原生方法名類似,用法一樣
-
6.設置上拉和下拉監聽:ltrv.setOnUpAndDownListener(OnUpAndDownListener onUpAndDownListener);
其中**up()**方法是上拉加載時調用,**down()**方法是下拉刷新是調用. -
7.設置條目點擊事件:適配器.setOnRvItemClickListener()
-
8.取消下拉:ltrv.getSwipeRefreshLayout().setRefreshing(false);
-
9.設置上拉時沒有更多數據了:適配器.setRefresh(false); true是上拉加載的效果(每次調用都會執行**.notifyDataSetChanged();**方法)
-
10.混淆代碼
##示例代碼
LtAdapter adapter = new LtAdapter(getActivity()) {@Overridepublic RecyclerView.ViewHolder onLtCreateViewHolder(ViewGroup viewGroup, int i) {return null;}@Overridepublic int getLtItemCount() {return 0;}@Overridepublic void onLtBindViewHolder(RecyclerView.ViewHolder viewHolder, int i) {}};rv.setRVOrientation(getActivity(), LtrvOrientation.VERTICAL_LISTVIEW).setNoItemText("暫無數據").setAdapter(adapter).setOnUpAndDownListener(new OnUpAndDownListener() {@Overridepublic void up() {//上拉加載回調}@Overridepublic void down() {//下拉刷新回調}});adapter.setOnRvItemClickListener(new OnRvItemClickListener() {@Overridepublic void onItemClick(View view, int i) {//條目點擊事件}});ps:在Kotlin的加持下,適配器(單類型條目)可以寫成這樣:
//父類的適配器,有上拉加載的View abstract class BaseLtAdapterOneType<T>(val context: Context, val list: ArrayList<T>?, val itemLayoutId: Int) : LtAdapter(context) {abstract fun setData(v: View, b: T, i: Int)override fun onLtBindViewHolder(p0: RecyclerView.ViewHolder?, p1: Int) {setData((p0 as BaseLtViewHolder).itemView, list!![p1], p1)}override fun getLtItemCount(): Int = list?.sizeoverride fun onLtCreateViewHolder(p0: ViewGroup?, p1: Int): RecyclerView.ViewHolder = BaseLtViewHolder(LayoutInflater.from(p0?.context).inflate(itemLayoutId, p0, false)!!)} class BaseLtViewHolder(view: View) : RecyclerView.ViewHolder(view) //使用 class MAdapter(context: Context, list: ArrayList<InfoBean>?) : BaseLtAdapterOneType<InfoBean>(context, list, item_layout的id) {override fun setData(v: View, b: InfoBean, i: Int) {v.tvTitle.text=b.title//直接使用item的view內的id,然后使用bean類的屬性賦值,i為position(為了簡單寫,所以都用了單個字母的簡寫)} }更多方法
-
rv.setNoItemText():若沒有條目則展示的文字
xml中:app:noItemText=“暫無數據” -
設置沒有條目時展示的view:ltrv.setNoItemView(view);(會自動設置居中)
xml中:app:noItemView="@drawable/ic_launcher" -
可以最多添加100個頭部的布局:適配器.addHeadView(view) 或者 適配 器.addHeadView(view,位置索引);
刪除是適配器.removeHeadView(view) 或者適配器.removeHeadView(位置索引);(注意:如果這些方法是在setAdapter()方法之后調用的,記得調用ltrv.notifyDataSetChanged();) -
也可以最多添加100個底部布局:適配器.addTailView();同理也可以刪除.(其實是可以做到 無限制的,但感覺100個就夠用了,而且注意不要返回12345500到12345800之間的type, 不然會有沖突)
-
若想監聽沒有條目了也可以單獨設置沒有條目時的監聽:適配器.addOnNoItemListener();
-
如果使用默認的上拉布局,則new適配器時使用上下文的構造方法;
如果使用自定義的上拉布局,則new適配器時傳入一個View對象,(**注意:**加載中的view的id必須為ll1,沒有更多數據的view的id必須為ll2,而且沒有更多數據的視圖默認設置為隱藏的) -
獲取下拉刷新的控件:
- 設置下拉刷新的顏色:
- 設置背景顏色
- 獲取內部的RecyclerView控件:ltrv.getRecyclerView();
- 設置默認分割線:rv.addItemDecoration_line()或者rv.addItemDecoration_drawable()
xml:app:dividerHeight=“1px” 設置高度,默認顏色
app:dividerColor=“000000” 設置分割線顏色
app:dividerDrawable="@drawable/ic_launcher" 設置圖片為分割線 - drawable文件夾里放lt_loading.jpg或.png可以替換掉上拉的進度條圖片
- layout文件夾里放lt_up_loading.xml文件可以替換掉上拉的整體布局,不過要注意刷新中的ViewGroupId需要是ll1,刷新成功的ViewGroupId需要時ll2
提交BUG請留言或發郵箱(lt.dygzs@qq.com),手動滑稽
總結
以上是生活随笔為你收集整理的LtRecyclerView:自带上拉下拉,能增加头条目和尾条目的RecyclerView的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Win10不能使用Genymotion模
- 下一篇: RecyclerView添加头条目显示空