2019独角兽企业重金招聘Python工程师标准>>>

上一节中一些列表集合数据到手机屏幕时,通常采用ListView组件+ArrayAdapter.

虽然它能为我们提供展示数据列表的能力,但是展示的项却不能定制,如果我们的项是由2个TextView组成的,它就无能为力了。项目中大部分的不单单是展示简单的项模板,更多时候,我们可以对项模板进行一些定制,来满足我们的需求,假设项模板需要展示2个TextView 呢?怎么办?

我们可以使用SimpleAdapter+ListView来实现。

SimpleAdapter其中一个构造函数如下:

public SimpleAdapter (Context context, List<? extends Map<String, ?>> data, int resource, String[] from, int[] to)

第一个参数:当前上下文对象。第二个参数:一个List类型的泛型集合,泛型类型必须继承之Map类型。第三个:布局资源的ID,

第四个参数:需要绑定的Key列表。第五个参数:与Key列表项对应的资源文件中的具体组件ID集合。

有以上的理论基础,我们知道使用SimpleAdapter会带来这样的好处:

1:可以自定义任何项模板,自由度很高(取决于美工水平)

2:可以为项模板指定一个匹配的数据

我们先来看看项模板的布局,很简单,就是一个ImageView,两个TextView

<? 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"         >      <      ImageView    
  android:layout_width  ="wrap_content"                    
    android:layout_height                 ="wrap_content"                  
    android:id                 ="@+id/img"                 >                    
                  </                 ImageView                 >                  
 
 
                  <                 TextView
                  android:id                 ="@+id/txtName"                
  android:layout_width                 ="wrap_content"                
  android:layout_height                 ="wrap_content"                
                  >                
                  </                 TextView                 >                
 
                  <                 TextView
                  android:paddingLeft                 ="20sp"                
  android:id                 ="@+id/txtLength"                
  android:layout_width                 ="wrap_content"                
  android:layout_height                 ="wrap_content"                
                  >                
                  </                 TextView                 >                
 
                </                 LinearLayout                 >            

我们可以定义数据源,当然这个数据源是继承自List集合接口的,并且类型为基础Map接口。如下:

List                 <                 Map                 <                 String,Object                 >>                 lists                 =                 new                 ArrayList                 <                 Map                 <                 String,Object                 >>                 ();
                            for                 (                 int                 i                 =                 0                 ;i                 <                 4                 ;i                 ++                 ){
                Map                 <                 String,Object                 >                 map                 =                 new                 HashMap                 <                 String,Object                 >                 ();
                map.put(                 "                 img                 "                 , R.drawable.icon);
                map.put(                 "                 name                 "                 ,                 "                 SimpleAdapter                 "                 +                 i);
                map.put(                 "                 length                 "                 ,                 "                 300                 "                 );
                lists.add(map);
            }            

然后我们希望绑定这些数据,到指定的组件中去,全部代码如下:

List                 <                 Map                 <                 String,Object                 >>                 lists                 =                 new                 ArrayList                 <                 Map                 <                 String,Object                 >>                 ();
                            for                 (                 int                 i                 =                 0                 ;i                 <                 4                 ;i                 ++                 ){
                Map                 <                 String,Object                 >                 map                 =                 new                 HashMap                 <                 String,Object                 >                 ();
                map.put(                 "                 img                 "                 , R.drawable.icon);
                map.put(                 "                 name                 "                 ,                 "                 SimpleAdapter                 "                 +                 i);
                map.put(                 "                 length                 "                 ,                 "                 300                 "                 );
                lists.add(map);
            }
           
            String []from                 =                 {                 "                 img                 "                 ,                 "                 name                 "                 ,                 "                 length                 "                 };
                            int                 []to                 =                 {R.id.img,R.id.txtName,R.id.txtLength};
            SimpleAdapter adapter                 =                 new                 SimpleAdapter(                 this                 ,lists, R.layout.image, from, to);
            listView.setAdapter(adapter);              

看看运行截图吧:

转载于:https://my.oschina.net/u/1463230/blog/268882

Android控件——ListView之Adapter提供数据(其二)相关推荐

  1. Android 数据库(SQLite)【简介、创建、使用(增删改查、事务、实战演练)、数据显示控件(ListView、Adapter、实战演练-绿豆通讯录)】

    目   录 (壹)SQLite数据库简介 (贰)数据库的创建 (叁)数据库的使用 3.1.SQlite的基本操作 3.1.1.添加数据 3.1.2.修改数据 3.1.3.查询数据 3.1.4.删除数据 ...

  2. android绿豆通讯录xml,Android 数据库(SQLite)【简介、创建、使用(增删改查、事务、实战演练)、数据显示控件(ListView、Adapter、实战演练)】...

    目   录 (壹)SQLite数据库简介 (贰)数据库的创建 (叁)数据库的使用 3.1.SQlite的基本操作 3.1.1.添加数据 3.1.2.修改数据 3.1.3.查询数据 3.1.4.删除数据 ...

  3. (android控件)ListView的Item中设置按钮实现

    前言 在项目的开发过程中,需要Listview的Item中包含按钮的效果.在实际开发过,Item中放置按钮后,ListView 单行选择背景颜色变化的效果没有了. 问题原因 ListView 和 其它 ...

  4. android控件ListView设置onClick事件

    实现思路 1.Activity中实现OnItemClickLisener; impliments AdoeptView.OnItemClickLisener 2.实现(重写)onItemClick方法 ...

  5. listview控件在php的使用方法,Android_Android编程之控件ListView使用方法,本文实例讲述了Android编程之控 - phpStudy...

    Android编程之控件ListView使用方法 本文实例讲述了Android编程之控件ListView使用方法.分享给大家供大家参考.具体分析如下: 控件ListView是一个重要的控件,可以被用作 ...

  6. Android 控件 RecyclerView 看这篇就够了

    [Android 控件 RecyclerView] 概述 RecyclerView是什么 从Android 5.0开始,谷歌公司推出了一个用于大量数据展示的新控件RecylerView,可以用来代替传 ...

  7. Android 控件 RecyclerView

    [Android 控件 RecyclerView] 概述 RecyclerView是什么 从Android 5.0开始,谷歌公司推出了一个用于大量数据展示的新控件RecylerView,可以用来代替传 ...

  8. Android 控件GridView之仿支付宝钱包首页带有分割线的GridView九宫格的完美实现

    Android控件GridView之仿支付宝钱包首页带有分割线的GridView九宫格的完美实现 关注finddreams:http://blog.csdn.net/finddreams/articl ...

  9. 文件存储、列表控件 ListView 及适配器 SimpleAdapter、BaseAdapter 的使用方 法

    一.文件存储 文件存储 Android中的文件存储分为内部存储和外部存储. 内部存储:将应用程序的数据以文件方式存储到设备的内部(data/[你的APP的包名]/files下),当创建的应用程序被卸载 ...

最新文章

  1. 6.非关系型数据库(Nosql)之mongodb:集群(主从复制)
  2. 【基础】哥德巴赫猜想
  3. centos mysql 5.6 源码_Centos7环境中mysql-5.6.39 源码安装
  4. 关于ios在H5页面长按识别二维码无效
  5. Java-虚拟机-常量池的表现方式
  6. oracle-约束-序列
  7. Matlab C-Mex Round 1
  8. 嵌入式C语言编程中经验教训总结(一) 详解const、static和volatile
  9. 【PHP】百度贴吧自动/云签到脚本(PC 端)
  10. CSS浏览器兼容性的4个解决方案
  11. HCIP考试-华为证书安全方向已取得
  12. 重定向时,将Unreal4骨骼调整为Tpose
  13. 怎么拯救一个不大靠谱的数据库系统 (5 不靠谱的前生)
  14. Git配置指南与使用
  15. Ubuntu系统---安装“搜狗拼音法”导致桌面打不开
  16. python 中list(列表),tupe(元组),str(字符串),dict(字典)之间的相互转换
  17. 什么是alpha matting?
  18. 文本、语义和社交分析技术,未来几年市场发展趋势的预测
  19. 一张图看懂UML类图
  20. Word文档下载(图片,数据表格)

热门文章

  1. CDays-3 习题二 (字典及文件读取练习)及相关内容解析。Python 基础教程
  2. 智能手机市场输家和赢家:Android手机厥后居上
  3. 【转载】Nessus安全测试插件编写教程
  4. Linux crontab
  5. echarts 柱状图颜色_echarts的实战案例一些(二)
  6. c++——抽象类以及string知识点补充
  7. 苹果大中华区营收锐减 决定去印度市场“掘金”
  8. 【转载】Java程序设计入门 (二)
  9. 修改Windows 2003/2008/2012远程桌面服务端口号
  10. 聊聊四种Oracle数字取整函数