自定义控件--快速索引(二)
来源:互联网 发布:软件自动升级方案设计 编辑:程序博客网 时间:2024/04/30 01:32
昨天讲了快速索引View的绘制流程,以及触摸事件的监听
今天将怎么把快速索引和listview利用起来形成类似联系人界面的效果,代码简单,不做太多讲解,最后会把源码上传到github上的
用法最重要的就是对listview进行字母排序,相同的进行合并!然后通过回调的函数中调用listview的setSelcter
数据源要进行排序,这里要注意需要对bean实现一个Comparable接口
private void addData(List<Person> persons) { for (int i = 0; i < NameConstans.NAME.length; i++) { persons.add(new Person(NameConstans.NAME[i])); } Collections.sort(persons);}
这里要用到一个中国人专用的jar包.奉上地址,具体的自己去看哈 http://download.csdn.net/download/wjw_java/6765939 将汉字转成拼音
效果是这样的
我们要把相同拼音的归到一个组下,顺便把字母和名字换个颜色好区分,listview中getView中的代码
public View getView(int position, View convertView, ViewGroup parent) { View view=null; if(convertView!=null){ view=convertView; }else{ view = View.inflate(parent.getContext(), R.layout.item_listview,null); } ViewHolder viewHolder=ViewHolder.getHolder(view); Person person = persons.get(position); String letter =null; if(position==0){ letter = person.getLetter();//首字母 }else{ String letter1 = persons.get(position - 1).getLetter(); if(!TextUtils.equals(letter1,person.getLetter())){ letter = person.getLetter(); } } viewHolder.index.setText(person.getLetter()); viewHolder.index.setVisibility(letter==null?View.GONE:View.VISIBLE); viewHolder.name.setText(person.getName()); return view;}
最后的效果
最后在回调监听中,设置选中条目
@Overridepublic void OnUpdate(String str) { for (int i = 0; i < mPersons.size(); i++) { Person person = mPersons.get(i); if(person.getLetter().equals(str)){ //跳转到指定位置 mLv.setSelection(i); break; } }}
动态图就不上传了,源码会上传到github上,明天会对这个自定义控件进行一些优化,让用户去设置自定义控件的背景颜色,字体大小等等,然后上传到库中,以后想用只要依赖一下即可从仓库中拉取下来,明天有时间就会讲解
0 0
- 自定义控件--快速索引(二)
- 自定义控件:快速索引
- 自定义控件--快速索引(一)
- 自定义控件--快速索引(三)
- 自定义控件之快速索引QuickIndexBar
- 自定义控件实现快速索引,字典排序
- 自定义View 实现字母快速索引控件
- Android自定义类似联系人列表的 快速索引控件
- 使用自定义控件和ListView实现快速索引功能
- android自定义控件索引
- 鱼眼索引控件详解之二 —— 快速索引实现
- 鱼眼索引控件详解之二 —— 快速索引实现
- 自定义控件--快速检索
- 自定义联系人快速索引栏
- 自定义侧边快速索引栏
- 自定义View:快速索引实现
- Androidstudio自定义控件,快速索引联系人的首字母条,效果图及代码详解
- 自定义iOS列表索引控件
- FastDFS简介
- 关于汉诺塔算法的递归写法
- Spring Data MongoDB : Query document(MongoDB中使用Query时的Query的编写和调用方式)
- windows10系统下删除文件提醒权限不够,抄袭
- View的工作原理一(基础知识点)
- 自定义控件--快速索引(二)
- nmap学习之目标说明
- 279. Perfect Squares
- 串口通讯
- 【NDN安全】Coordination Supports Security: A New Defence Mechanism Against Interest Flooding in NDN 学习笔记
- CF432D 求等于原串前缀的后缀子串,输出子串的长度和出现次数
- 日期类Date、Calendar
- 无题
- 【git】git push免用户名密码,用公钥