Android杂谈--ListView之ArrayAdapter的使用

  ArrayAdapter  

  总是感觉写自己的博客才更能够学到东西,网上尽管有很多好的资料,但是参差不齐,需要浪费大量时间才能够找到最需要的,索性写自己最需要的东西。

  Adapter是适配器的意思,在Android中大量的使用到了ListView,而ListView需要与各种适配器结合才能够使用。不同的场合使用不同的适配器,所以总结一下最常用的会对自己以后很有帮助

  ArrayAdapter(数组适配器)一般用于显示一行文本信息,所以比较容易。

public ArrayAdapter(Context context,int textViewResourceId,List<T> objects)

上面的这行代码来装配数据,要装配这些数据就需要一个连接ListView视图对象和数组数据的适配器来两者的适配工作,ArrayAdapter的构造需要三个参数,依次为this,布局文件(注意这里的布局文件描述的是列表的每一行的布局,可以参见main.xml文件,android.R.layout.simple_list_item_1是系统定义好的布局文件只显示一行文字,数据源(一个List集合)。同时用setAdapter()将ListView和Adapter绑定。

例子一:可以用来简单的显示一条文字

main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="vertical" ><TextViewandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:text="cnblogs--花郎" /><ListView android:id="@+id/listview"android:layout_width="fill_parent"android:layout_height="wrap_content"/></LinearLayout>

Activity

package com.loulijun.demo14;import java.util.ArrayList;import android.app.Activity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;public class Demo13Activity extends Activity {private ListView lv;private ArrayList<String> list = new ArrayList<String>();@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);lv = (ListView)findViewById(R.id.listview);ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_expandable_list_item_1,getData());lv.setAdapter(adapter);}private ArrayList<String> getData(){list.add("180平米的房子");list.add("一个勤劳漂亮的老婆");list.add("一辆宝马");list.add("一个强壮且永不生病的身体");list.add("一个喜欢的事业");return list;}
}

注意:这里的android.R.layout.simple_expandable_list_item_1是系统内置布局,样式就是如下,这部分也可以自己定义布局然后倒入进去,但是只能是一个TextView

代码很少,一看就懂。可能麻烦一些的是泛型这部分,不懂的可以翻翻JAVA的基础。运行效果如下

例子二:这个例子可以增加一个ImageView,但是在设置ArrayAdapter的时候需要增加这个自定义的布局

public ArrayAdapter(Context context,int resource,int textViewResourceId,List<T> objects)

上面的第一个参数是上下文,一般为this。第二个参数是自定义的布局文件,比如下面的就是R.layout.list_item。第三个参数是TextView的id,第四个参数是数据

list_item.xml(main.xml与上面一样)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="horizontal" ><ImageView android:id="@+id/img"android:layout_width="wrap_content"android:layout_height="wrap_content"android:src="@drawable/ic_launcher"/><TextView android:id="@+id/tv"android:layout_width="fill_parent"android:layout_height="wrap_content"/></LinearLayout>

Activity

package com.loulijun.demo14;import java.util.ArrayList;import android.app.Activity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;public class Demo13Activity extends Activity {private ListView lv;private ArrayList<String> list = new ArrayList<String>();@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);lv = (ListView)findViewById(R.id.listview);ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.list_item, R.id.tv,getData());lv.setAdapter(adapter);}private ArrayList<String> getData(){list.add("180平米的房子");list.add("一个勤劳漂亮的老婆");list.add("一辆宝马");list.add("一个强壮且永不生病的身体");list.add("一个喜欢的事业");return list;}
}

这里的ArrayAdapter与SimpleAdapter还不一样,它需要在适配器中设置自定义的布局后还要将里面的TextView的id设置进去。但是里面的其他控件比如设置不同的图等就很麻烦实现了,一般如果需要实现

有图片有文字的最好是用BaseAdapter或者SimpleAdaper。ArrayAdapter比较适合于简单的现实一些文字信息

效果如下:

例子三:实现复杂的效果

说实话,这样写的很蛋疼,很多效果不能实现,还是BaseAdapter更加万能,但还是说说如何用ArrayAdapter实现复杂试图。这就需要重写getView方法了,类似BaseAdapter

重写getView方法有很多好处,比如ListView优化的时候主要是在这个方法中的操作进行优化的,另外自定义的视图基本都是通过这个方法来加载,以便达到自己理想的效果

这部分可以参考:

http://www.cnblogs.com/sayo/archive/2010/12/30/1922590.html

http://www.cnblogs.com/xirihanlin/archive/2009/08/03/1537609.html

Android杂谈--ListView之ArrayAdapter的使用相关推荐

  1. 42.Android之ListView中ArrayAdapter简单学习

    今天学习下Android中ListView关于ArrayAdapter数据绑定, 废话少说直接上代码. 改下布局文件: 1 <?xml version="1.0" encod ...

  2. Android杂谈--ListView之BaseAdapter的使用

    Android杂谈--ListView之BaseAdapter的使用 前言 话说开发用了各种Adapter之后感觉用的最舒服的还是BaseAdapter,尽管使用起来比其他适配器有些麻烦,但是使用它却 ...

  3. Android杂谈--ListView之SimpleAdapter的使用

    Android杂谈--ListView之SimpleAdapter的使用 SimpleAdapter SimpleAdapter是扩展性最好的适配器,可以定义各种你想要的布局,而且使用很方便 Simp ...

  4. android 多个数组合并,Android之ListView和ArrayAdapter的组合使用

    ListView在android中的列表显示.主要是用于数据的显示,通常是从网络上解析出来的数据,显示到ListView上.可以显示很多行,每一行习惯上称之为item.而要控制ListView总共要显 ...

  5. Android杂谈--ListView之BaseAdapter的使用一(转)

    BaseAdapter是直接继承自接口类Adapter的,使用BaseAdapter时需要重写很多方法      BaseAdapter与其他Adapter有些不一样,其他的Adapter可以直接在其 ...

  6. Android杂谈--ListView之BaseAdapter的使用二(转)

    实例二:Gallery上应用BaseAdapter main.xml <?xml version="1.0" encoding="utf-8"?> ...

  7. Android ListView与Arrayadapter之间的搭配使用

    在做安卓开发的时候很多时候都要用到ListView来显示数据,ListView使用的也很广泛,用到了ListView就会使用到adapter适配器,关键就在于adapter,刚开始学安卓的时候就根本不 ...

  8. android 分组 listview,Android实现的ListView分组布局改进示例

    本文实例讲述了android实现的listview分组布局改进方法.分享给大家供大家参考,具体如下: 由于是在网上转载的一篇文章,在这里就不多说废话了,首先看一下最终的效果图: 然后是实现该listv ...

  9. Android实现ListView异步加载图片

    转: http://www.iteye.com/topic/685986 ListView异步加载图片是非常实用的方法,凡是是要通过网络获取图片资源一般使用这种方法比较好,用户体验好,下面就说实现方法 ...

最新文章

  1. 对学校公开课信息网站一次渗透测试
  2. wireshrk中的名词说明
  3. 基于ZooKeeper的Dubbo简单抽样登记中心
  4. 单片机方波幅度调节c语言,为什么我用单片机做的频率可调的方波输出会有尖刺,而且会断...
  5. Spring MVC:The request sent by the client was syntactically incorrect
  6. 基片集成波导原理_第5讲基片集成波导.ppt
  7. jenkins source files 和 Remove Prefix 用户
  8. ES6精解:箭头函数
  9. OpenCV基本图形绘制之圆
  10. 数据库能查出数据,但mybatis查询出返回的结果是null
  11. 2018/3/27 省选模拟赛 140分
  12. 知识竞赛现场管理系统安装配置及使用疑难问题汇编
  13. 问道手游服务器维护,问道手游2021年5月20日维护公告_问道手游2021年5月20日更新了什么_玩游戏网...
  14. ITIL 4: 培训与认证
  15. java后台json集合传前台js
  16. linux多人共享桌面,gnome 开远程桌面共享功能(linux启动多个桌面)
  17. 智慧小区智能安防设计方案
  18. Ubuntu18网络配置
  19. 基于Nebula3的游戏: 龙歌:黑暗之眼 试玩下载
  20. Android框架之ButterKnife(黄油刀)

热门文章

  1. qt opengl 2d绘图效率_Qt趣味开发之打造一个3D名字渲染小工具
  2. f分布表完整图_标准正态分布函数数值表怎么查?(加完整分布函数表)
  3. 洛谷——P1421 小玉买文具
  4. CSS3动画序列(CSS3)
  5. AWT_Swing_JPasswordField密码框(Java)
  6. 实验2-4-3 求平方根序列前N项和 (C语言)
  7. 微信小程序API之showActionSheet(操作菜单)
  8. 允许其他网络用户通过此计算机的internet连接来连_「Azure云」什么是Azure虚拟网络?...
  9. Gensim官方教程翻译(二)——主题与转换(Topics and Transformations)
  10. 参加西安第三届数字油田高端论坛暨第二届国际学术会议