使用RecycleView实现动态获取数据展开二级列表展示
来源:互联网 发布:宁波爆炸 知乎 编辑:程序博客网 时间:2024/05/22 12:18
本文参考 Android – RecyclerView(超简单)实现可展开列表修改而来,主要是记录下方便日后查看,在此基础上针对自身需求做的改变,主要解决一下几个问题。
- 这是个可展开列表的RecycleView
- 二级列表数据动态获取
- 优化原文中获取原始一级列表位置方式
效果如下
Demo
另外由于我的页面包含gridview和recycleview是放在scrollview中,所以又参考 PullToRefresh这个库实现了加载更多的功能,这个库可以比较方便的把加载更多的功能加进去,但是考虑到其他人使用的时候可能没有这种场景所以并没有把加载更多的代码加进去。
如果需要加载更多和刷新的可以去找个XRercycleView的控件,这种也蛮多的。
——————————————-
使用中发现点击最后一个一级节点 不会拉出子项来显示
修改MainActivity,在oncreat中增加一个方法
treeAdapter.setOnScrollListener(new TreeAdapter.OnScrollListener() { @Override public void scrollTo(int pos) { treeRecycleView.smoothScrollToPosition(pos); } });
修改TreeAdapter itemClickListener附近的代码,主要是增加addLeaf来计算添加的叶子的总数,然后计算是否是点击的是最后一个
int addleaf;//添加的叶子数 private ItemClickListener itemClickListener = new ItemClickListener() { @Override public void onExpandChildren(TreeBean bean, int realPosition) { int position = dataBeanList.lastIndexOf(bean);//确定当前点击的item位置 List<TreeBean> rdblist = getLeafData(position); //获取要展示的子布局数据对象,注意区分onHideChildren方法中的getChildBean()。 if (rdblist == null || rdblist.size() == 0) { return; } addleaf = addleaf + rdblist.size(); for (int i = rdblist.size() - 1; i > -1; i--) { add(rdblist.get(i), position + 1);//在当前的item下方插入 } if (realPosition == dataBeanList.size() - addleaf - 1 && mOnScrollListener != null) { //如果点击的item为最后一个 mOnScrollListener.scrollTo(position + 1);//向下滚动一个,使子布局能够完全展示 } dataBeanList.get(position).setTreeBeanList(rdblist); } @Override public void onHideChildren(TreeBean bean) { int position = dataBeanList.lastIndexOf(bean);//确定当前点击的item位置 List<TreeBean> children = bean.getTreeBeanList();//获取子布局对象 if (children == null) { return; } addleaf = addleaf - children.size(); for (int i = 1; i < children.size() + 1; i++) { remove(position + 1);//删除 } if (mOnScrollListener != null) { mOnScrollListener.scrollTo(position); } } };
阅读全文
0 0
- 使用RecycleView实现动态获取数据展开二级列表展示
- 二级列表展示网络数据
- ExpandableListView 二级展开列表
- 展开二级列表
- 二级列表ExpendableListView实现从网络上获取数据
- 封装RecycleView的Adapter并实现列表展示
- 二级列表展示
- 使用列表控件展示数据
- 二级列表展示网络请求到的数据
- 二级列表ExpandableListView+gridview网络请求数据模拟商城展示
- Bootstrap Table获取并展示数据列表
- 二级列表展示数据库查询
- tableViewCell列表点击展开显示二级列表
- JS实现动态一,二级标签展示例子
- recycleview实现分组列表
- 使用RecyclerView实现列表展开动画
- Android中ListView实现展示列表数据
- html+js+PHP(使用了smarty模板技术)+mysql实现二级动态下拉列表(select)
- git问题记录
- 经典诗词汇总
- (安卓APP)关于使用偏好设置储存数据,首次登录应用到新手指导页,再次登录直接到主页面简单的相关实现代码
- ubuntu 16.04 配置fast rcnn
- JS 点击复制Copy
- 使用RecycleView实现动态获取数据展开二级列表展示
- css浮动布局
- org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)
- quartz详解2:quartz由浅入深
- css盒子模型
- 面试题你知道微服务么
- STM32,SPI原理
- LINUX下模拟实现sleep函数
- 进入html+css世界的正确姿势