返回

Android:BaseMultiItemQuickAdapter打造嵌套/多级列表

发布时间:2022-12-09 06:19:11 682
# webkit# java# java# git# github

 

效果图:

Android:BaseMultiItemQuickAdapter打造嵌套/多级列表_ide

Android:BaseMultiItemQuickAdapter打造嵌套/多级列表_android_02

Android:BaseMultiItemQuickAdapter打造嵌套/多级列表_android_03

Android:BaseMultiItemQuickAdapter打造嵌套/多级列表_ide_04

1 引入库

implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.46'

Android:BaseMultiItemQuickAdapter打造嵌套/多级列表_android_05

2 对象bean

一级列表:

package com.lucas.yanfriends.model.YanNew.select;



import com.chad.library.adapter.base.entity.AbstractExpandableItem;

import com.chad.library.adapter.base.entity.MultiItemEntity;



import java.io.Serializable;



import static com.lucas.yanfriends.ui.selectSchoolMajor.adapter.MajorSmallAdapter.ITEM_FIRST_LEVEL;



public class MajorMainBean extends AbstractExpandableItem implements Serializable , MultiItemEntity {





private String major_main_name;



public MajorMainBean(String major_main_name) {

this.major_main_name = major_main_name;

}



public String getMajor_main_name() {

return major_main_name;

}



public void setMajor_main_name(String major_main_name) {

this.major_main_name = major_main_name;

}



@Override

public int getItemType() {

return ITEM_FIRST_LEVEL;

}



@Override

public int getLevel() {

return 0;

}

}

Android:BaseMultiItemQuickAdapter打造嵌套/多级列表_android_05

二级列表:

package com.lucas.yanfriends.model.YanNew.select;



import com.chad.library.adapter.base.entity.MultiItemEntity;



import java.io.Serializable;



import static com.lucas.yanfriends.ui.selectSchoolMajor.adapter.MajorSmallAdapter.ITEM_FIRST_LEVEL;

import static com.lucas.yanfriends.ui.selectSchoolMajor.adapter.MajorSmallAdapter.ITEM_SECOND_LEVEL;



public class MajorSmallBean implements Serializable , MultiItemEntity {





private int major_id;

private String major_name;

private int major_bbsid;

private int major_pid;

private String major_pname;



public int getMajor_id() {

return major_id;

}



public void setMajor_id(int major_id) {

this.major_id = major_id;

}



public String getMajor_name() {

return major_name;

}



public void setMajor_name(String major_name) {

this.major_name = major_name;

}



public int getMajor_bbsid() {

return major_bbsid;

}



public void setMajor_bbsid(int major_bbsid) {

this.major_bbsid = major_bbsid;

}



public int getMajor_pid() {

return major_pid;

}



public void setMajor_pid(int major_pid) {

this.major_pid = major_pid;

}



public String getMajor_pname() {

return major_pname;

}



public void setMajor_pname(String major_pname) {

this.major_pname = major_pname;

}



@Override

public int getItemType() {

return ITEM_SECOND_LEVEL;

}

}

Android:BaseMultiItemQuickAdapter打造嵌套/多级列表_ide_07

3 一/二级列表的布局

一级列表的布局:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:app="http://schemas.android.com/apk/res-auto"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:background="@color/white"

android:orientation="vertical">



<RelativeLayout

android:layout_width="match_parent"

android:layout_height="@dimen/dp_45">

<TextView

android:id="@+id/tv_name"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:textSize="@dimen/sp_14"

android:textStyle="bold"

android:text="dfkjfds"

android:textColor="@color/black"

android:layout_alignParentLeft="true"

android:layout_marginLeft="@dimen/dp_15"

android:layout_centerVertical="true"/>

<ImageView

android:id="@+id/item_iright"

android:layout_width="20dp"

android:layout_height="20dp"

android:layout_alignParentRight="true"

android:layout_centerVertical="true"

android:src="@mipmap/blackback"

android:rotation="180"

android:padding="4dp"

android:alpha="0.5"

android:layout_marginRight="15dp"

/>

<View

android:layout_width="match_parent"

android:layout_height="@dimen/dp_1"

android:layout_alignParentBottom="true"

android:layout_marginLeft="@dimen/dp_15"

android:background="@color/gray_backgroud_parent"

/>

</RelativeLayout>

</LinearLayout>



二级列表的布局:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:app="http://schemas.android.com/apk/res-auto"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:background="@color/white"

android:orientation="vertical">



<RelativeLayout

android:layout_width="match_parent"

android:layout_height="@dimen/dp_38">

<TextView

android:id="@+id/tv_name"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:textSize="@dimen/sp_13"

android:textStyle="bold"

android:text="dfkjfds"

android:textColor="@color/gray"

android:layout_alignParentLeft="true"

android:layout_marginLeft="@dimen/dp_25"

android:layout_centerVertical="true"/>

<View

android:layout_width="match_parent"

android:layout_height="@dimen/dp_1"

android:layout_alignParentBottom="true"

android:layout_marginLeft="@dimen/dp_25"

android:background="@color/gray_backgroud_parent"

/>

</RelativeLayout>

</LinearLayout>

Android:BaseMultiItemQuickAdapter打造嵌套/多级列表_android_08

4 Adapter

package com.lucas.yanfriends.ui.selectSchoolMajor.adapter;



import android.support.annotation.Nullable;



import com.chad.library.adapter.base.BaseMultiItemQuickAdapter;

import com.chad.library.adapter.base.BaseViewHolder;

import com.chad.library.adapter.base.entity.MultiItemEntity;

import com.lucas.yanfriends.R;

import com.lucas.yanfriends.model.YanNew.select.MajorMainBean;

import com.lucas.yanfriends.model.YanNew.select.MajorSmallBean;



import java.util.List;





public class MajorSmallAdapter extends BaseMultiItemQuickAdapter<MultiItemEntity, BaseViewHolder> {



public static final int ITEM_FIRST_LEVEL = 1;

public static final int ITEM_SECOND_LEVEL = 2;





public MajorSmallAdapter(@Nullable List data) {

super(data);



addItemType(ITEM_FIRST_LEVEL, R.layout.list_main_major_item);

addItemType(ITEM_SECOND_LEVEL, R.layout.list_small_major_item);

}



@Override

protected void convert(BaseViewHolder helper, MultiItemEntity item) {

switch (helper.getItemViewType()) {

case ITEM_FIRST_LEVEL:

final MajorMainBean item_temp = (MajorMainBean) item;

helper.setText(R.id.tv_name, item_temp.getMajor_main_name());

helper.itemView.setOnClickListener(v -> {

int pos = helper.getAdapterPosition();

if (item_temp.isExpanded()) {

collapse(pos);

} else {

expand(pos);

}

});

break;

case ITEM_SECOND_LEVEL:

final MajorSmallBean item_temp2 = (MajorSmallBean) item;

helper.setText(R.id.tv_name, item_temp2.getMajor_name());

break;

}

}





}

Android:BaseMultiItemQuickAdapter打造嵌套/多级列表_ide_04

5 activty中的设置

5.1 适配器

//--------------------------列表适配器--------------------------

//Adapter适配器初始化

recycle.setLayoutManager(new LinearLayoutManager(mContext));

//设置列表默认动画效果

recycle.setItemAnimator(new DefaultItemAnimator());

//绑定适配器

majorSmallAdapter = new MajorSmallAdapter(list_MajorBean);

recycle.setAdapter(majorSmallAdapter);

//列表点击事件

majorSmallAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {

@Override

public void onItemClick(BaseQuickAdapter adapter, View view, int position) {



}

});

//--------------------------适配器--------------------------

Android:BaseMultiItemQuickAdapter打造嵌套/多级列表_xml_10

5.2 数据填充

for (MultiItemEntity multiItemEntity : list_MajorBean_beifen) {

MajorSmallBean majorSamllBean = ((MajorSmallBean) multiItemEntity);

if (temp_class != majorSamllBean.getMajor_pid()) {

MajorMainBean majorMainBean = new MajorMainBean(majorSamllBean.getMajor_name());

temp_class = majorSamllBean.getMajor_pid();

for (MultiItemEntity multiItemEntity2 : list_MajorBean_beifen) {

MajorSmallBean majorSamllBean2 = ((MajorSmallBean) multiItemEntity2);

if (majorSamllBean2.getMajor_pid() == temp_class) {

majorMainBean.addSubItem(majorSamllBean2);

}

}

list_MajorBean.add(majorMainBean);

}

}

 

关于数据的构造,简化下来如下:

List data = new ArrayList<>();
for (int i = 0; i < lvCount; i++) {
ExpandItem item0 = new ExpandItem("一级列表标题" + i);
for (int j = 0; j < lv1Count; j++) {
Expand1Item item1 = new Expand1Item("二级列表标题" + j);
for (int k = 0; k < lv2Count; k++) {
item1.addSubItem(new Expand2Item("三级列表标题" + k));
}
item0.addSubItem(item1);
}
data.add(item0);
}

 

特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(0)
按点赞数排序
用户头像
精选文章
thumb 中国研究员首次曝光美国国安局顶级后门—“方程式组织”
thumb 俄乌线上战争,网络攻击弥漫着数字硝烟
thumb 从网络安全角度了解俄罗斯入侵乌克兰的相关事件时间线