android中分组显示数据,Adapter库实现列表分组显示

Adapter库实现列表分组显示

立即下载

金额: 3 元

支付方式:

bd813f9a26588abd4b8538ec02927371.png

0415d51dea5453e9b5709c3ae56c90e9.png

友情提醒:源码购买后不支持退换货

立即支付

发布时间:2019-07-08

概述

简洁,明了的方式实现列表数据分组显示,以帮大家解决实际开发中遇到的此类问题。

详细

###前言

之前我写过一篇关于 Brvah,这个强大 adpter 框架的简单介绍,但也只是简单的介绍,很多关于它的重要使用方法都没来得及介绍。那么今天我们就来讲 Brvah 实现的一个重要功能,及列表数据分组显示。

今天涉及的内容有:

1. Brvah 库依赖

2. 数据单体的实现

3. 列表数据在 MainActivity 中的使用

4. 涉及相关布局代码

5. 效果图和项目结构图

先来波效果图:

![](/contentImages/image/20190708/2eZereRQ65jb4QiVFk8.gif)

####一.Brvah 库依赖

在你项目的project对应的build.gradle中添加如下代码:

```

allprojects {

repositories {

...

maven { url "https://jitpack.io" }

}

}

```

然后在你的app_module对应的build.gradle中添加如下引用:

```

dependencies {

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

}

```

####二. 数据单体的实现

实现数据列表分组显示的话,我们放在列表中的对象要继承SectionEntity,例如我们要写一个Person的列表分组功能,那么对象Person则需要继承SectionEntity,Person具体代码如下:

```

package com.example.entity;

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

/**

* Description:

*

* Author:pei

* Date: 2019/7/6

*/

public class Person extends SectionEntity {

private String name;

private int age;

private int type;

public Person(boolean isHeader, String header) {

super(isHeader, header);

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

public int getType() {

return type;

}

public void setType(int type) {

this.type = type;

}

@Override

public String toString() {

return "Person{" +

"name='" + name + '\'' +

", age=" + age +

", type=" + type +

'}';

}

}

```

以上Person必须实现的一个构造方法是:

```

public Person(boolean isHeader, String header) {

super(isHeader, header);

}

```

其中,当 isHeader 为true时,表示这个Person是用来做分组的标题的,分组标题要显示的内容,可以放到 String header 参数上。当isHeader =false,表示这个Person是分组里面具体的item项。

####三.列表数据在 MainActivity 中的使用

我写了一个适配器GroupAdapter ,此类用于具体显示列表中的内容。分组列表显示的具体代码写在MainActivity中,下面贴出MainActivity的具体代码:

```

public class MainActivity extends AppActivity {

@BindView(R.id.tv_text)

TextView mTvText;

@BindView(R.id.btn_confirm)

Button mBtnConfirm;

@BindView(R.id.rv)

RecyclerView mRecyclerView;

private ListmList;

private GroupAdaptermGroupAdapter;

@Override

public int getContentViewId() {

return R.layout.activity_main;

}

@Override

public void initData() {

mBtnConfirm.setText("重置");

mList=new ArrayList<>();

Person p0=new Person(true,"学生");

Person p1=new Person(false,null);

p1.setName("小明");

p1.setAge(10);

Person p2=new Person(false,null);

p2.setName("小放");

p2.setAge(12);

Person p3=new Person(false,null);

p3.setName("小黄");

p3.setAge(14);

Person p4=new Person(true,"老师");

Person p5=new Person(false,null);

p5.setName("王老师");

p5.setAge(28);

Person p6=new Person(false,null);

p6.setName("张老师");

p6.setAge(30);

Person p7=new Person(false,null);

p7.setName("李老师");

p7.setAge(29);

mList.add(p0);

mList.add(p1);

mList.add(p2);

mList.add(p3);

mList.add(p4);

mList.add(p5);

mList.add(p6);

mList.add(p7);

mGroupAdapter=new GroupAdapter<>(R.layout.item_group_adapter,R.layout.item_group_adapter_header,mList);

LinearLayoutManager layoutManager = new LinearLayoutManager(mContext);

layoutManager.setSmoothScrollbarEnabled(true);

layoutManager.setAutoMeasureEnabled(true);

mRecyclerView.setNestedScrollingEnabled(false);

mRecyclerView.setHasFixedSize(true);

mRecyclerView.setLayoutManager(layoutManager);

mRecyclerView.setAdapter(mGroupAdapter);

}

@Override

public void setListener() {

mBtnConfirm.setOnClickListener(this);

}

@Override

public void onClick(View v) {

super.onClick(v);

switch (v.getId()) {

case R.id.btn_confirm:

testCache();

break;

default:

break;

}

}

private void testCache(){

mTvText.setText("oop");

}

}

```

####四.涉及相关布局代码

#####4.1 MainActivity对应布局activity_main.xml代码如下

```

```

#####4.2 分组显示的头部布局item_group_adapter_header.xml代码如下

```

```

#####4.3 分组显示的item布局item_group_adapter.xml代码如下

```

```

####五.效果图和项目结构图

效果图

![](/contentImages/image/20190708/2eZereRQ65jb4QiVFk8.gif)

项目结构图

![](/contentImages/image/20190708/Wl5qX1iwoeFKIPl8wFY.png)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值