ListView,RecyclerView等列表中实现分层的方法
来源:互联网 发布:淘宝店铺入口图 编辑:程序博客网 时间:2024/05/01 06:02
有时候我们希望的在列表中把数据按照一定的逻辑分类显示,比如按照字母A B C等分层,在IOS中的列表是有section这个概念的,但在Android中这个功能需要自己实现。
基本的思想是在每一个Item项的上方中都添加一个TextView用来显示标头,如果这个标头是第一次出现,则把它显示出来,否则就是GONE了。判断标头是第一次出现的方法如下:先获取position属于哪个section,
再获取此section出现的首位置,然后就是判断position是否是首位置了。第二步中获取到的首位置信息可以用一个map之类的东西缓存起来,因为这个信息会被不断地查询。
/** * 根据ListView的当前位置获取分类的首字母的Char ascii值 */ public int getSectionForPosition(int position) { return list.get(position).getSortLetters().charAt(0); } private Map<Integer, Integer> mSectionPositions = new HashMap<>(); /** * 根据分类的首字母的Char ascii值获取其第一次出现该首字母的位置 */ public int getPositionForSection(int section) { if (mSectionPositions.containsKey(section)) { return mSectionPositions.get(section); } for (int i = 0; i < getCount(); i++) { String sortStr = list.get(i).getSortLetters(); char firstChar = sortStr.toUpperCase().charAt(0); if (firstChar == section) { mSectionPositions.put(section, i); return i; } } return -1; }
// 根据position获取分类的首字母的Char ascii值 int section = getSectionForPosition(position); // 如果当前位置等于该分类首字母的Char的位置 ,则认为是第一次出现 if (position == getPositionForSection(section)) { viewHolder.tvLetter.setVisibility(View.VISIBLE); viewHolder.tvLetter.setText(mContent.getSortLetters()); } else { viewHolder.tvLetter.setVisibility(View.GONE); }
0 0
- ListView,RecyclerView等列表中实现分层的方法
- Android在滚动列表中实现视频的播放(ListView & RecyclerView)
- Android在滚动列表中实现视频的播放(ListView & RecyclerView)
- RecyclerView替代Listview,实现滚动列表的显示
- RecyclerView的初步使用(1)----代替ListView实现图片列表
- RecyclerView、ListView实现单选列表的优雅之路
- RecyclerView、ListView实现单选列表的优雅之路
- RecyclerView、ListView实现单选列表的优雅之路.
- RecyclerView、ListView实现单选列表
- 解决列表 (ListView GrifView RecyclerView )结合CheckBox实现列表选择的的问题
- RecyclerView和ListView实现多视图加载的方法
- Recyclerview 实现listView的代码
- 在可滑动列表(ListView & RecyclerView)中实现视频播放
- ListView,GridView等列表控件中CountDownTimer的应用
- 用RecyclerView实现移动应用中常见的列表菜单
- 【Android】 RecyclerView、ListView实现单选列表的优雅之路.
- 【Android】 RecyclerView、ListView实现单选列表的优雅之路.
- RecyclerView和CardView实现列表功能,用LeanCloud所存储的数据中填充RecyclerView
- Android数据的保存和读取
- 详解Java注解教程及自定义注解
- molloc()和free()
- YUV420存储为BMP和JPG图片
- android studio 返回键 NavUtils.navigateUpFromSameTask(this);
- ListView,RecyclerView等列表中实现分层的方法
- webuploader easyui上传小组件
- 并查集 HDU 1272 小希的迷宫
- 观察者模式
- libsvm用于回归预测的使用步骤总结
- Android开发之MySQL操作
- SUSE 11 zypper 本地源配置
- map用法
- Java多线程应用之火车站售票