RecycleView載入不同型別的Item

2021-07-25 23:03:27 字數 2676 閱讀 9356

前情提要:去面試一家外企,需求是要重複使用乙個布局很多次,單單是布局的話用include就可以了,但是邏輯也要復用,而且提出了使用listview復用條目優化效能,想做成乙個自定義控制項。我嘗試了下,感覺直接用recycleview應該也是可以的。

效果展示

實現思路

新增依賴

com.android.support:recyclerview-v7:24.2.0

根據需求建立三個不同型別的item對應的布局檔案

為每個型別的item建立資料bean類

建立通用的item資料bean類

為每個型別的item建立viewholder

建立adapter類

在activity使用recycleview

1.建立不同的item布局檔案

2. 為每個型別的item建立資料bean類

3. 建立通用的item資料bean類

public

class

recycleviewitemdata

public

recycleviewitemdata

(t t, int datatype)

public t gett

() public

void

sett

(t t)

public

intgetdatatype

() public

void

setdatatype

(int datatype)

}

3. 為每個型別的item建立viewholder

editviewholder

public class

editviewholder

extends

recyclerview.viewholder

}

spinnerholder

public class

spinnerholder

extends

recyclerview.viewholder

}

略。。。

4. 建立adapter類

recycleview的adapter中需要重寫方法的簡單介紹

public

class

madapter

extends

recyclerview.adapter

//用來建立viewholder

@override

public recyclerview.viewholder oncreateviewholder

(viewgroup parent, int viewtype)

//如果viewtype是按鈕型別,則建立buttonviewholder型viewholder

if (viewtype == type_button)

//如果viewtype是下拉列表型別,則建立spinnerholder型viewholder

if (viewtype == type_spinner)

return

null;

}//用來繫結資料

@override

public

void

onbindviewholder

(recyclerview.viewholder holder, int position)

else

if(position == 3)

else

if(position == 5)

((editviewholder) holder).medittext1.settext(medititem.gettext1());

((editviewholder) holder).medittext2.settext(medititem.gettext2());

}//如果holder是buttonviewholder的例項

if (holder instanceof buttonviewholder)

}//如果holder是spinnerholder的例項

if (holder instanceof spinnerholder)

}@override

public

intgetitemviewtype

(int position)

else

if (1 == datalist.get(position).getdatatype()) else

if (2 == datalist.get(position).getdatatype()) else

}@override

public

intgetitemcount

()}

5. 在activity使用recycleview

public

class

mainactivity

extends

}

Recycleview分頁載入

ui上無載入動畫 原理 當最後乙個item顯示時,執行載入操作 同理也可設定成最後某個item顯示時,提前執行載入操作 1 重寫recycleview滑動監聽 public abstract class loadmoreonscrolllistener extends recyclerview.on...

關於recycleview下拉載入更多資料問題補充

mrecyclerview.scrolltoposition lastvisibleitem 這個方法,但是會導致乙個問題,就是如果不進行上拉載入操作的時候,在別的頁面過來,也會自動定位到資料列表的最後乙個位置,然後我就換了一種寫法msuperrefreshrecyclerview.movetopo...

recycleview滑動到底部自動載入更多資料

首先我們的recycleveiw肯定有乙個layoutmanager final gridlayoutmanager manager new gridlayoutmanager mcontext,2 mrecyclerview.setlayoutmanager manager mrecyclervi...