首先配置什么的。点击这里

代码:
两个类,一个是一级的类,一个是二级的类

直接贴上

 package com.mogujie.tt.ui.model;import com.chad.library.adapter.base.entity.AbstractExpandableItem;import com.chad.library.adapter.base.entity.MultiItemEntity;import com.mogujie.tt.ui.adapter.FenZuAdapter;/** * Created by luoxw on 2016/8/10. * 第一组 */public class Level0Item extends AbstractExpandableItem<Person> implements MultiItemEntity {    public String title;    public String subTitle;//标记    public Level0Item( String title, String subTitle) {        this.subTitle = subTitle;        this.title = title;    }    @Override    public int getItemType() {        return FenZuAdapter.TYPE_LEVEL_0;    }    @Override    public int getLevel() {        return 1;    }}package com.mogujie.tt.ui.model;import com.chad.library.adapter.base.entity.MultiItemEntity;import com.mogujie.tt.ui.adapter.FenZuAdapter;/** * Created by luoxw on 2016/8/10. * 第二组 */public class Person implements MultiItemEntity{    public String name;    public Person(String name) {        this.name = name;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    @Override    public int getItemType() {        return FenZuAdapter.TYPE_PERSON;    }}

适配器

 package com.mogujie.tt.ui.adapter;import android.content.Context;import android.view.View;import com.chad.library.adapter.base.BaseMultiItemQuickAdapter;import com.chad.library.adapter.base.BaseViewHolder;import com.chad.library.adapter.base.entity.MultiItemEntity;import com.mogujie.tt.ui.model.Level0Item;import com.mogujie.tt.ui.model.Person;import com.sankeyun.bb.R;import java.util.List;/** * Created by ${CWJ} on 2017/8/2. * 描述: 分组activity */public class FenZuAdapter extends BaseMultiItemQuickAdapter {    private Context context;    public static final int TYPE_LEVEL_0 = 0;    public static final int TYPE_PERSON = 1;    /**     * Same as QuickAdapter#QuickAdapter(Context,int) but with     * some initialization data.     *     * @param data A new list is created out of this one to avoid mutable list     */    public FenZuAdapter(List data) {        super(data);        addItemType(TYPE_LEVEL_0, R.layout.item_head);        addItemType(TYPE_PERSON, R.layout.item_item);//        addItemType(TYPE_PERSON, R.layout.item_expandable_lv2);    }    @Override    protected void convert(final BaseViewHolder helper, final MultiItemEntity item) {        switch (helper.getItemViewType()) {            case TYPE_LEVEL_0:                final Level0Item lv0 = (Level0Item) item;                helper.setText(R.id.head_name, lv0.title)//父布局标题                        .setText(R.id.subTitle_name, lv0.subTitle);//下标//                        .setImageResource(R.id.head_iv, lv0.isExpanded() ? R.drawable.arrow_b : R.drawable.arrow_r)                helper.itemView.setOnClickListener(new View.OnClickListener() {                    @Override                    public void onClick(View v) {                        int pos = helper.getPosition();//                        Log.d(TAG, "Level 0 item pos: " + pos);                        if (lv0.isExpanded()) {                            collapse(pos);                        } else {//                            if (pos % 3 == 0) {//                                expandAll(pos, false);//                            } else {                            expand(pos);//      }                        }                    }                });                break;            case TYPE_PERSON:                Person person = (Person) item;                helper.setText(R.id.item_name, person.getName());//                helper.itemView.setOnClickListener(new View.OnClickListener() {//                    @Override//                    public void onClick(View view) {//                        int cp = getParentPosition(person);//                        ((Level0Item) getData().get(cp)).removeSubItem(person);//                        getData().remove(helper.getClickPosition());//                        notifyItemRemoved(helper.getClickPosition());//                    }//                });                break;        }    }}

显示页面
我这里是Fragment

package com.mogujie.tt.ui.fragment;import android.os.Bundle;import android.support.v4.app.Fragment;import android.support.v7.widget.LinearLayoutManager;import android.support.v7.widget.RecyclerView;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import com.chad.library.adapter.base.entity.MultiItemEntity;import com.mogujie.tt.ui.adapter.FenZuAdapter;import com.mogujie.tt.ui.model.Level0Item;import com.mogujie.tt.ui.model.Person;import com.sankeyun.bb.R;import java.util.ArrayList;import java.util.List;public class AddressBooksFragment_item extends Fragment {    private FenZuAdapter adapter;    private List list;    private RecyclerView recyclerView;    /**     * @param args     * Fragment 中的Fragment     * 这里要承载 四种类型的Aapater     */    private String title;    @Override    public View onCreateView(LayoutInflater inflater, ViewGroup container,                             Bundle savedInstanceState) {        View v = inflater.inflate(R.layout.fragment_address_books_item, container, false);        recyclerView= (RecyclerView) v.findViewById(R.id.address_rl);        //设置 recyclerView//        final GridLayoutManager manager=new GridLayoutManager(getActivity(),2);//        manager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {//            @Override//            public int getSpanSize(int i) {//                return adapter.getItemViewType(i)==FenZuAdapter.TYPE_PERSON ? 0:manager.getSpanCount();//            }//        });        recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));        initView();        return v;    }       //获取数据   private ArrayList getDat(){       int lv0Count = 5;       int personCount = 5;       ArrayList res = new ArrayList<>();       Person p=new Person("人类");       for (int i = 0; i < lv0Count; i++) {//设置外层数据           Level0Item lv0 = new Level0Item( "第",i+"组");           for (int k = 0; k < personCount; k++) {               //设置内层数据               lv0.addSubItem(i,p);           }           res.add(lv0);       }       return res;    }    public void initView() {    //只看这个企业通讯录里面的        list=new ArrayList<>();        list=getDat();        //adapter 初始化。        title = getArguments().getString("address_type");        if (title.equals("企业通讯录")) {            adapter=new FenZuAdapter(list);            recyclerView.setAdapter(adapter);//            adapter.expandAll();//默认展开全部 不写就不展开        } else if (title.equals("群组")) {        } else if (title.equals("讨论组")) {        } else {//常用联系人        }    }}

还有两个布局

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="horizontal" android:layout_width="match_parent"    android:background="@color/bg_color"    android:id="@+id/head_layout"    android:layout_height="wrap_content">    <TextView        android:id="@+id/head_name"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="父布局名称"        android:textColor="@color/font_default_color"        android:gravity="center|left"        />    <TextView        android:id="@+id/subTitle_name"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="父布局名称"        android:textColor="@color/font_default_color"        android:gravity="center|left"        />LinearLayout><?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="wrap_content"    android:id="@+id/item_layout"    android:background="@color/group_manager_user_title"    android:orientation="vertical">    <TextView        android:id="@+id/item_name"        android:layout_width="match_parent"        android:layout_height="40dp"        android:gravity="center|left"        android:layout_marginLeft="10dp"        android:textColor="@color/font_qianhei_color"        android:text="子布局Name" />LinearLayout>

最后效果图:
Android 使用BRVAH 实现二级菜单。类似QQ分组_第1张图片

更多相关文章

  1. 相对布局的一些属性
  2. android代码编写布局和控件
  3. Android:数据库增删改查、SQLite、SQLiteOpenHelper、openOrCreat
  4. [Android]屏幕自适应布局
  5. Android面试题总结(三)数据结构篇
  6. Android使用SQLite数据库(2)
  7. Android中横屏切换的布局
  8. Android常用布局颜色值大全
  9. android checkbox 或RadioButton, textView居左居右布局

随机推荐

  1. 分享6 个值得收藏的 Python 代码
  2. 闭包的原理与经典应用场景,访问器属性,类与
  3. 函数类型和数据类型
  4. js流程控制/方法简化/函数参数过多过少处
  5. C++实现AVL树的基本操作指南
  6. JavaScript展开运算符和剩余运算符的区别
  7. JavaScript仿京东放大镜特效
  8. JavaScript函数this指向问题详解
  9. Python教程之pytest命令行方式运行用例
  10. laravel_day2