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和适配器Adapter不得不说的秘密,欢迎进来看。。。
  • j06100610
  • j06100610
  • 2015年08月14日 23:36
  • 2560

listview通用适配器和RecyclerView通用适配器

ListView ViewHolder类: package com.liang.listviewcommonadapter; import android.annotation.SuppressL...
  • qq_30089721
  • qq_30089721
  • 2017年03月23日 16:02
  • 78

Android 快速开发系列 打造万能的ListView GridView 适配器

转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38902805 ,本文出自【张鸿洋的博客】1、概述相信做Android开发的写得最...
  • lmj623565791
  • lmj623565791
  • 2014年08月28日 21:32
  • 137293

Glide入门教程——3.适配器(ListView, GridView)

这个系列的前两篇文章已经展示了如何加载一张图片到ImageVIew里。这一节我们要展示ListView和GridView里adapter如何处理每个单元内的ImageView加载图片。这跟相册应用处理...
  • kakaxi1o1
  • kakaxi1o1
  • 2016年09月13日 23:24
  • 828

实现(ListView/GridView等)万能数据适配器

List,View,GridView等列表展示控件是我们在项目中不可或缺的一部分,而且在项目中用到的地方肯定不止一两个地方,好的项目,大的项目可能要用到几十上百个ListView。 我们知道要实现Li...
  • true100
  • true100
  • 2016年02月18日 16:04
  • 1580

安卓GridView(自定义适配器)

先贴布局:就放了一个GridView
  • summer_ck
  • summer_ck
  • 2016年03月25日 17:56
  • 4442

7、ListView的几种适配器及自定义适配器

ListView是我们在Android应用开发中常用的组件,它通过列表的形式展示数据,具有很强的可扩展性,通常使用还会给每一项绑定一个点击时间,用于处理相应的请求,ListView在电商的商品列表中是...
  • li460998973
  • li460998973
  • 2014年12月02日 21:41
  • 5714

android ListView自定义适配器实现

android 自定义适配器自定义适配器实现步骤 一,继承BaseAdapter 二,添加数据集合和反射器实现构造器和setter方法 三,实现getCount,getItem,getItemI...
  • Maybe_ch
  • Maybe_ch
  • 2017年03月04日 23:51
  • 657

Android中ListView与适配器ArrayAdapter,SimpleAdapter,定义BaseAdapter适配器,ListView添加headerView,ListView滚动到最后一项

1.ListView,ArrayAdapter.简单适配器(主要用于单一的文本) 2.SimpleAdapter:构造方法SimpleAdapter(Context context,List> dat...
  • yingtian648
  • yingtian648
  • 2016年08月01日 10:41
  • 786

Java泛型应用之打造Android中ListView和GridView万能适配器【CommonAdapter】--超简洁写法

在android中使用最多的就是ListView,GridView,用到这两个控件那么肯定要用到适配器,那就是定义一个类继承BaseAdapter,让后覆写它里面的getCount(),getView...
  • u010785585
  • u010785585
  • 2016年10月16日 11:25
  • 3244
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ListView,GridView 和 适配器 Adapter
举报原因:
原因补充:

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