ArrayAdapter小结
来源:互联网 发布:刺客信条知乎 编辑:程序博客网 时间:2024/05/17 17:39
以前用ArrayAdapter时,所带入的数据都是String数组或者是List,网上大部分人也是这么使用的,所以一直就很奇怪,为什么ArrayAdapter是一个泛型,但使用的时候却总是String呢?今天看下了ArrayAdapter的源码才发现,getView中用到的是传入对象的toString(),如果是String肯定没问题。因此,如果要用到自己定义的对象的话,可以重新写下toString方法,返回要显示的内容就好了。
一般上很少使用ArrayAdapter,更多的是自己去继承BaseAdapter。但是在使用AutoCompleteTextView和MultiAutoCompleteTextView,发现好多例子都是用ArrayAdapter来实现,这个更适用于提示内容和选择后的内容一致的情况,比如说做历史记录的时候。
说到AutoCompleteTextView和MultiAutoCompleteTextView,二者主要差别应该就是:前者只能选择一次,而后者可以进行多次选择,并且后者还需多加上一句:multiAutoCompleteTextView.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer());这样才会起到作用,目前对于CommaTokenizer类并不是很了解。
现在做到的功能是像发送短信页面选择收信人时一样,选择提示是两行:姓名和电话号码,选择后提示的是“某某某<189********>”的样式,所以,我们就不能直接拿ArrayAdapter来使用了,但是我们可以拿过来进行一些改动:
(1)修改getView方法,按照自己需要的布局来;
(2)过滤的条件是在ArrayFilter中的performFiltering中,可以看到,里边是用了对象的toString值来进行过滤,我们可以在自己的类中定义一个方法,返回过滤的条件,以空格隔开,如:String getComparWords(){
return name + " " + phone;
}
这样就可以通过名字和号码进行过滤。
(3)选择后的内容显示是由getItem返回的对象决定的,一般上都是传入对象,所以,用的也是对象的toString方法,但是,我们可以修改这个方法,包括返回值的类型,实现我们自己要显示的内容。
看来理解相关的源代码很是重要呀。
- ArrayAdapter小结
- ArrayAdapter
- ArrayAdapter
- ArrayAdapter
- ArrayAdapter
- ArrayAdapter
- ArrayAdapter
- ArrayAdapter
- ArrayAdapter
- ArrayAdapter
- ArrayAdapter
- ArrayAdapter
- ArrayAdapter
- ArrayAdapter
- Arrayadapter
- ArrayAdapter
- ArrayAdapter
- ArrayAdapter
- Jquery实现回车键Enter切换焦点
- 大话数据结构(五)串
- OLAP简介及Mondrian快速入门
- SpringMVC中Controller跳转到另一个Controller步骤
- Java回调
- ArrayAdapter小结
- java生成复杂word文档的完美解决方案
- discuz 部分伪静态(Apache Web Server-虚拟主机用户)步骤
- Java编程技巧:小爬虫程序
- 【学习笔记】MySQL数据的批量导入与导出
- LuCI的RPC接口使用方法详解
- apis.view 之Controls
- Android aidl 编译报couldn't find import for class
- highcharts y轴单位/刻度 自定义