RecyclerView實現多type頁面

2021-09-24 03:49:24 字數 3164 閱讀 7603

目錄介紹

如果覺得好,可以star一下,謝謝!當然也歡迎提出建議,萬事起於忽微,量變引起質變!

recyclerview 可以用viewtype來區分不同的item,也可以滿足需求,但還是存在一些問題,比如:

主要操作步驟

**如下所示

public class homepageadapter extends recyclerview.adapter 

@override

public recyclerview.viewholder oncreateviewholder(viewgroup parent, int viewtype)

return null;

}@override

public void onbindviewholder(recyclerview.viewholder holder, int position)

}@override

public int getitemviewtype(int position) else

}@override

public int getitemcount()

public static class bannerviewholder extends recyclerview.viewholder

}public static class newviewholder extends recyclerview.viewholder

}public static class adviewholder extends recyclerview.viewholder

}public static class textviewholder extends recyclerview.viewholder

}public static class imageviewholder extends recyclerview.viewholder

}}

當列表中型別增加或減少時adapter中主要改動的就是getitemviewtype、oncreateviewholder、onbindviewholder這三個方法,因此,我們就從這三個方法中開始著手。

在getitemviewtype方法中。

private arraylistheaders = new arraylist<>();

public inte***ce interitemview

/** * 獲取型別,主要作用是用來獲取當前項item(position引數)是哪種型別的布局

* @param position 索引

* @return int

*/@deprecated

@override

public final int getitemviewtype(int position)

}return getviewtype(position-headers.size());

}

oncreateviewholder

/**

* 建立viewholder,主要作用是建立item檢視,並返回相應的viewholder

* @param parent parent

* @param viewtype type型別

* @return 返回viewholder

*/@nonnull

@override

public final baseviewholder oncreateviewholder(@nonnull viewgroup parent, int viewtype)

final baseviewholder viewholder = oncreateviewholder(parent, viewtype);

setonclicklistener(viewholder);

return viewholder;

}private view createviewbytype(viewgroup parent, int viewtype) else

layoutparams.setfullspan(true);

view.setlayoutparams(layoutparams);

return view;}}

for (interitemview footerview : footers) else

layoutparams.setfullspan(true);

view.setlayoutparams(layoutparams);

return view;}}

return null;

}

在onbindviewholder方法中。可以看到,在此方法中,新增一種header型別的view,則通過onbindview進行資料繫結。

/**

* 繫結viewholder,主要作用是繫結資料到正確的item檢視上。當檢視從不可見到可見的時候,會呼叫這個方法。

* @param holder holder

* @param position 索引

*/@override

public final void onbindviewholder(baseviewholder holder, int position)

onbindviewholder(holder,position-headers.size());

}

如何使用,如下所示,這個就是banner型別,可以說是解耦了之前adapter中複雜的操作

interitemview interitemview = new interitemview() 

@override

public void onbindview(view headerview)

};adapter.addheader(interitemview);

封裝後好處

01.關於部落格彙總鏈結

02.關於我的部落格

RecyclerView實現item區域性重新整理

一 view的資料繫結方法 recyclerview.adapter裡有這麼兩個方法 public void onbindviewholder nonnull viewholder holder,int position public void onbindviewholder nonnull vh...

RecyclerView多條目實現

這裡做兩個條目的例子public class 類名 extends recyclerview.adapterclass 類名 extends recyclerview.viewholder class 類名 extends recyclerview.viewholder 此處省略n 1個預設實現的有...

RecyclerView多布局的載入與實現

android layout width match parent android layout height match parent android.support.v7.widget.recyclerview 之後在activity給例項化出來 然後我們需要寫介面卡 public class ...