Android ExpandableRecyclerView使用方法詳解
本文為大家分享了Android ExpandableRecyclerView的使用,供大家參考,具體內(nèi)容如下
1.目前只支持兩級結(jié)構(gòu)。
2.支持所有組同時全部展開,支持同一時間只能展開一組。
3.GroupView,ChildView高度自定義。
4.支持初始化數(shù)據(jù)時,指定展開某組數(shù)據(jù)。
5.支持GroupItem,ChildItem的Onlick,OnLongClick事件。
6.展開收起帶動畫。
效果圖:

使用步驟:加入依賴
compile 'com.drawthink:expandable-recyclerview:0.0.3'
1.繼承BaseViewHolder,實現(xiàn)自己的ViewHolder
1.1 在構(gòu)造函數(shù)中初始化你的View(包括GroupView,和childView).
1.2 分別實現(xiàn)以下兩個方法,并在對應(yīng)方法中返回對應(yīng)Layout布局文件中根節(jié)點的ID。
public int getGroupViewResId() public int getChildViewResId()
示例代碼:
public class ImageViewHolder extends BaseViewHolder {
public ImageView image;
public TextView tvTitle;
/**
* 初始化你的View(這里包括GroupView,和childView)
*/
public ImageViewHolder(Context ctx, View itemView, int viewType) {
super(ctx,itemView, viewType);
image = (ImageView) itemView.findViewById(R.id.iv_image);
tvTitle = (TextView)itemView.findViewById(R.id.tv_title);
}
/**
* @return 返回你的GroupView 布局文件中根節(jié)點的ID
*/
@Override
public int getGroupViewResId() {
return R.id.group;
}
/**
* @return 返回你的ChildView 布局文件中根節(jié)點的ID
*/
@Override
public int getChildViewResId() {
return R.id.child;
}
}
2.繼承BaseRecyclerViewAdapter/** * author:Drawthink * describe: * date: 2017/5/22 * T :group data * S :child data * VH :ViewHolder */ public abstract class BaseRecyclerViewAdapter<T,S,VH extends BaseViewHolder> extends RecyclerView.Adapter<VH>
示例Adapter代碼:
public class ImageAdapter extends BaseRecyclerViewAdapter<String,ImageBean,ImageViewHolder> {
private Context ctx;
private List datas;
private LayoutInflater mInflater;
public ImageAdapter(Context ctx, List<RecyclerViewData> datas) {
super(ctx, datas);
mInflater = LayoutInflater.from(ctx);
this.ctx = ctx;
this.datas = datas;
}
@Override
public void onBindGroupHolder(ImageViewHolder holder, int groupPos,int position, String groupData) {
holder.tvTitle.setText(groupData);
}
@Override
public void onBindChildpHolder(ImageViewHolder holder, int groupPos,int childPos,int position, ImageBean childData) {
holder.image.setBackgroundResource(childData.getResId());
}
@Override
public View getGroupView(ViewGroup parent) {
return mInflater.inflate(R.layout.title_item_layout,parent,false);
}
@Override
public View getChildView(ViewGroup parent) {
return mInflater.inflate(R.layout.item_image_layout,parent,false);
}
@Override
public ImageViewHolder createRealViewHolder(Context ctx, View view, int viewType) {
return new ImageViewHolder(ctx,view,viewType);
}
}
完成以上兩步之后,基本大工告成,由于ExpandableRecyclerView的數(shù)據(jù)是要分組的,所以提供了RecyclerViewData來封裝
/** * @param groupData * @param childDatas * @param isExpand 初始化展示數(shù)據(jù)時,該組數(shù)據(jù)是否展開 */ public RecyclerViewData(T groupData, List<S> childDatas,boolean isExpand)
那接下來看下數(shù)據(jù)具體是怎樣封裝的。
mDatas = new ArrayList<>();
List<ImageBean> bean1 = new ArrayList<>();
List<ImageBean> bean2 = new ArrayList<>();
List<ImageBean> bean3 = new ArrayList<>();
// 每個子列表長度可以不相同
bean1.add(new ImageBean("Dog", R.mipmap.dog));
bean1.add(new ImageBean("Dog", R.mipmap.dog));
bean2.add(new ImageBean("Cat", R.mipmap.cat));
bean3.add(new ImageBean("Bird", R.mipmap.bird));
mDatas.add(new RecyclerViewData("Dog", bean1, true));
mDatas.add(new RecyclerViewData("Cat", bean2, true));
mDatas.add(new RecyclerViewData("Bird", bean3, true));
所有工作以完成,現(xiàn)在你可以象平常使用Adapter,RecyclerView一樣,來愉快的寫代碼了。
注意:在對元數(shù)據(jù)mDatas進行增刪操作時,要調(diào)用adapter.notifyRecyclerViewData();否則會造成數(shù)據(jù)索引錯亂的問題。
代碼github地址
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Android實現(xiàn)ViewPager無限循環(huán)效果(二)
這篇文章主要為大家詳細介紹了Android實現(xiàn)ViewPager無限循環(huán)效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-05-05
Android開發(fā)組件化架構(gòu)設(shè)計原理到實戰(zhàn)
這篇文章主要為大家介紹了Android開發(fā)組件化架構(gòu)設(shè)計原理到實戰(zhàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-06-06
Android實現(xiàn)BannerLayout圖文輪播功能
這篇文章主要為大家詳細介紹了Android實現(xiàn)BannerLayout圖文輪播功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-05-05
Android 軟鍵盤出現(xiàn)不適應(yīng)的解決辦法總結(jié)
這篇文章主要介紹了Android 軟鍵盤出現(xiàn)不適應(yīng)的解決辦法總結(jié)的相關(guān)資料,需要的朋友可以參考下2017-03-03
Android SharedPreference存儲文件三步走
SharedPreferences是安卓平臺上一個輕量級的存儲類,用來保存應(yīng)用的一些常用配置,比如Activity狀態(tài),Activity暫停時,將此activity的狀態(tài)保存到SharedPereferences中;當Activity重載,系統(tǒng)回調(diào)方法onSaveInstanceState時,再從SharedPreferences中將值取出2023-01-01
Android的ImageButton當顯示Drawable圖片時就不顯示文字
Android提供的ImageButton當顯示Drawable圖片時就不會再顯示文字了,下面與大家分享下3種解決方法,不會的朋友可以了解下哈2013-06-06

