ExpandableRecycleview准确的说应该是ExpandableRecycleviewAdapter,该功能并没有自定义Recycleview,只是重组了数据,然后根据自己写得数据类型写就可以,同时不需要使用的时候将原本的数据改变,使用方便。
先上效果图,有图有真相
为啥要写这个呢,一个是公司业务需要,一个是去github看了看星最的多,看了一眼就不想看了,acitivity中写的东西他多了,封装……
俺这个在Activity中运用起来就简单多了
Activity的写法:
public class ExpandableActivity extends BaseRecycleViewActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_expandable);
}
@Override
protected void initView() {
initTitle();
title_name.setText("收缩框");
}
private ExpandableRecycleAdapter adapter;
private List<GroupBean> dataAdapter;
protected BaseHeaderView pl_header;
@Override
protected void initRecycleView() {
dataAdapter = new LinkedList<>();
//分组创建数据
for (int size = 0; size < 3; size++) {
GroupBean groupBean = new GroupBean();
List<ItemBean> itemBeanList = new ArrayList<>();
groupBean.setGroup(size);
for (int j = 0; j < 10; j++) {
ItemBean itemBean = new ItemBean();
itemBean.setItem(j);
itemBeanList.add(itemBean);
}
groupBean.setItemBeanList(itemBeanList);
dataAdapter.add(groupBean);
}
//recycleview的基本写法
rlv_all = (RecyclerView) findViewById(R.id.rlv_all);
adapter = new ExpandableRecycleAdapter(thisActivity, dataAdapter);
//这里是关键,根据你的组别和每组个数绑定正真的item
for (int i = 0; i < dataAdapter.size(); i++) {
adapter.addGroupAndItem(dataAdapter.get(i).getItemBeanList().size());
}
setRecycle(adapter, null, new RecycleDividerItemLinear(thisActivity,
LinearLayoutManager.VERTICAL,
getResources().getColor(R.color.color_eeeeee))
);
adapter.setOnExpandableClickListener(new OnExpandableClickListener() {
@Override
public void onExpandableClick(View clickView, BaseExpandableBean selecBean) {
//这个bean里面含有是group还是group里面的item;
}
});
pl_header = (BaseHeaderView) findViewById(R.id.pl_header);
pl_header.setOnRefreshListener(new BaseHeaderView.OnRefreshListener() {
@Override
public void onRefresh(BaseHeaderView baseHeaderView) {
pl_header.postDelayed(new Runnable() {
@Overr