ListView,GridView 和 适配器 Adapter

原创 2016年06月01日 17:25:10

                                                                                    

        由图可以看到在Android中与Adapter有关的所有接口、类的完整层级图。在我们使用过程中可以根据自己的需求实现接口或者继承类进行一定的扩展。比较常用的有 BaseAdapter,SimpleAdapter,ArrayAdapter,SimpleCursorAdapter等。

BaseAdapter是一个抽象类,继承它需要实现较多的方法,所以也就具有较高的灵活性;

ArrayAdapter支持泛型操作,最为简单,只能展示一行字。

SimpleAdapter有最好的扩充性,可以自定义出各种效果。

SimpleCursorAdapter可以适用于简单的纯文字型ListView,它需要Cursor的字段和UI的id对应起来。如需要实现更复杂的UI也可以重写其他方法。可以认为是SimpleAdapter对数据库的简单结合,可以方便地把数据库的内容以列表的形式展示出来。

SimpleAdapter:

ArrayAdapter比较简单,这里就不说了,简单说一下SimpleAdapter,SimpleAdapter可以直接使用,下面介绍一下                        SimpleAdapter中参数的含义

 new SimpleAdapter(Context context, List<? extends Map<String, ?>> data, int resource, String[] from, int[] to                context    :这个表示上下文

            data   :填充的数据,一个Map集合中的数据代表在一个条目的数据,每一个条目的数据都以键值对的方式存入到                                Map集合中,然后再放到List集合中,

            resource:条目的布局文件

            from:这个字符串数组里面存放的是 map集合中的键 ,用于在Adapter中取出数据用的

            to    :这个int数组 存放的是条目布局中个个组件的id ,但顺序要与from中的 键相对于,即这个组件的数据在                                Map中的键要与这个组件的 id 对应。方便在Adaper中为其添加数据


BaseAdapter:

        一般自定义适配器都用BaseAdapter,首先继承这个抽象类,然后实现其方法

如图,这是一个自定义的Adapter,他的功能和SimpleAdapter类似。这里需要写一个构造函数和覆盖父类的方法。构造方法中的参数和SimpleAdapter的一样,下面介绍一下覆盖的方法的含义

        getCount(): 返回data的大小,即条目的总数

        getItem():返回当前条目的数据,这里返回的Map集合,也可返回具体数据

        getItemId():返回当前位置的 条目Id 这里直接返回位置即可,因为位置也是唯一的

        getView():这个方法是用对条目来填充数据,然后将填充好的数据返回

在getView中可以为组件设置单击事件,这样就可以响应组件的点击事件。但要注意的是,需要将组件设置为不可获取焦点,但可点击,这个可以直接在xml文件clickable="boolean",focusable=“boolean”。因为如果获取焦点的话会夺去ListView获取GridView 的焦点,然后条目不可点击了。值得注意的是TextView默认情况下clickable,focusable都为false,Button都为true。

        

HandleView是用来优化的,避免findViewById()这条语句的重复执行,原理就是将获取的组件放入HandleView中,然后再将HandleView放入convertView的Tag中,用的时候在取出


ListView 和 GridView 的 setOnItemClickListener 方法设置的是条目监听,只能监听条目,不能监听条目中的组件,所以要自定义适配器,在getView中添加条目中组件的监听事件,而SimpleAdapter却不能,这就是自定义Adapter的优点

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

通用型的listview/gridview适配器adapter

往往在项目中我会回遇到很多不同样式布局的listview/gridview的item布局或不同的实体类ban。假如我们有10个不同的实体类,10个不同的item布局,那我们是不是要去写10个adapt...

ListView,GridView和适配器Adapter不得不说的秘密

ListView,GridView和适配器Adapter不得不说的秘密,欢迎进来看。。。

Android中ListView,Gallery,GridView 的适配器Adapter的使用

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 1...

打造通用Adapter(适用于ListView,GridView)

通用的ViewHolder /** * 通用的ViewHolder * Created by Timor on 2015/4/25. */ public class ViewHolder { ...

自定义通用Adapter适配ListView GridView

概述相信做Android开发的写得最多的就是ListView,GridView的适配器吧,对于Adapter一般都继承BaseAdapter复写几个方法,getView里面使用ViewHolder模式...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)