博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android控件——ListView之Adapter提供数据(其二)
阅读量:7211 次
发布时间:2019-06-29

本文共 2183 字,大约阅读时间需要 7 分钟。

hot3.png

上一节中一些列表集合数据到手机屏幕时,通常采用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

26071251_d1W6.gif

复制代码  

 

<? 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接口。如下:

26071251_d1W6.gif

复制代码  

 

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);
            }
           

 

复制代码  

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

26071251_d1W6.gif

复制代码  

 

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);  
           

 

复制代码  

看看运行截图吧:

26071251_ESGU.jpg

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

你可能感兴趣的文章
做门户网站 个人站长的新好出路
查看>>
sql中exists,not exists的用法
查看>>
CentOS6.5更改ssh端口问题
查看>>
11g默认审计选项
查看>>
Where Did That New Exchange 2010 Mailbox Go?
查看>>
CentOS 7 yum安装Zabbix
查看>>
Bash编程入门
查看>>
神器:REST测试工具[wiztools.org restclient]客户端Jar依赖Java安装环境
查看>>
生成keystore是报错拒绝访问(已测试)
查看>>
从一道题浅说 JavaScript 的事件循环
查看>>
每天进步一点点——Linux文件锁编程flock
查看>>
sqlserver锁机制详解(sqlserver查看锁)
查看>>
[公告]欢迎您加入WF技术研究团队
查看>>
5.10. Web Tools
查看>>
将Eclipse代码导入到Android Studio的两种方式
查看>>
ASP.Net4.0中新增23项功能
查看>>
HTML JS 数据校验
查看>>
Mysql中分页查询两个方法比较
查看>>
保存一下dedecms数据库表和字段说明,方便日后查询
查看>>
公众号群发文章支持添加小程序
查看>>