ListView的SimpleAdapter详解

ListView的两个职责:1、将数据添加到布局中;2、响应用户的选择点击操作

点击任一选项时

响应用户的点击操作改变标题栏显示

源代码ListViewSimpleAdtActivity.java

public class ListViewSimpleAdtActivity extends Activity {
		// private List<String> data = new ArrayList<String>();
		@Override
		public void onCreate(Bundle savedInstanceState) {
			super.onCreate(savedInstanceState);
			setContentView(R.layout.listv_sa);  
			//获得Layout里面的ListView  
			ListView list = (ListView) findViewById(R.id.ListView01);  
			//生成适配器的Item和动态数组对应的元素
			SimpleAdapter listItemAdapter = new SimpleAdapter(
					this,   
					getData(),   
					R.layout.listitem,
					new String[]{"img","title","info"},
					new int[]{R.id.img,R.id.title,R.id.info});
			//添加并且显示  
			list.setAdapter(listItemAdapter); 
			//添加单击监听  
			list.setOnItemClickListener(new OnItemClickListener() {  
                @Override  
                public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {               
					Map<String, Object> clkmap = (Map<String, Object>) arg0.getItemAtPosition(arg2);
                	setTitle(clkmap.get("title").toString()+"的网址为:"+clkmap.get("info").toString());  
                }  
            });  
	    }
	    //生成多维动态数组,并加入数据  
		private List<Map<String, Object>> getData() {
			ArrayList<Map<String, Object>> listitem = new ArrayList<Map<String, Object>>();

			Map<String, Object> map = new HashMap<String, Object>();
			map.put("img", R.drawable.tb_baidu);
			map.put("title", "百度");
			map.put("info", "http://www.baidu.com/");
			listitem.add(map);

			map = new HashMap<String, Object>();
			map.put("img", R.drawable.tb_sina);
			map.put("title", "新浪");
			map.put("info", "http://www.sina.com.cn/");
			listitem.add(map);

			map = new HashMap<String, Object>();
			map.put("img", R.drawable.tb_tencent);
			map.put("title", "腾讯");
			map.put("info", "http://www.qq.com/");
			listitem.add(map);

			map = new HashMap<String, Object>();
			map.put("img", R.drawable.tb_netease);
			map.put("title", "网易");
			map.put("info", "http://www.163.com/");
			listitem.add(map);

			return listitem;
		}

}

配置文件listitem.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    
    <ImageView android:id="@+id/img" 
        android:layout_width="49dip"        
        android:layout_height="50dip"  
        android:layout_margin="5px"/>
    
    <LinearLayout android:orientation="vertical" 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"> 
        <TextView android:id="@+id/title"            
            android:layout_width="wrap_content"            
            android:layout_height="wrap_content"            
            android:textColor="#FFFFFFFF"            
            android:textSize="22px" />   
                 
        <TextView android:id="@+id/info"            
            android:layout_width="wrap_content"           
            android:layout_height="wrap_content"            
            android:textColor="#FFFFFFFF"            
            android:textSize="13px" />    
    </LinearLayout>
</LinearLayout>

listv_sa.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:id="@+id/LinearLayout01" 
	android:layout_width="fill_parent" 
	android:layout_height="fill_parent" 
	>
    <ListView 
    	android:id="@+id/ListView01"
    	android:layout_width="fill_parent" 
    	android:layout_height="wrap_content" 
    	/>  
</LinearLayout>

SimpleAdapter构造函数为:

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

重点介绍SimpleAdapter各参数的含义:

第一个context,上下文,SimpleAdapter所要运行关联到的视图,就是你这个SimpleAdapter所在的Activity(一般而言),所以这个参数一般是“前Activity的名字.this”

第二个是一个泛型只要是一个List就行,这一般会想到是ArrayList,而他内部存储的则是Map或者继承自Map的对象,比如HashMap,这里是作为数据源,而且每一个ArraList中的一行就代表着呈现出来的一行,Map的键就是这一行的列名,值也是有列名的。

第三个资源文件,就是说要加载这个两列所需要的视图资源文件,一般在Layout建立相应的.xml文件,你可以左边一个TextView右边一个TextView,目的在于呈现左右两列的值!

第四个参数是一个String数组,主要是将Map对象中的名称映射到列名,一一对应

第五个是将第四个参数的值一一对象的显示(一一对应)在接下来的int形的id数组中,这个id数组就是layout的xml文件中命名id形成的唯一的int型标识符

这样也就达到了数据的列表呈现!

时间: 2024-08-08 17:23:48

ListView的SimpleAdapter详解的相关文章

安卓ListView控件详解

1.ArrayAdapter 这个是最简单的了,只默认接受TextView控件,而且还只是一个. listView = new ListView(this); //注意没有使用XML文件的 //样式是安卓提供的样式 listView.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_1,getData())); setContentView(listView); 这个就表

android listview 替代品recyclerview详解

安卓v7支持包下的ListView替代品————RecyclerView RecyclerView这个控件也出来很久了,相信大家也学习的差不多了,如果还没学习的,或许我可以带领大家体验一把这个艺术般的控件. 据官方介绍,该控件是属于之间用的非常多的ListView和GridView的替代品,既然能替代用的如此普遍的它们,这自然有其该有的优势. 1)相对于ListView而言RecyclerView的优势体现在: ①封装了之前ListView的优化,封装了之前ViewHolder的复用,这样在自定

android ListView与Adapter详解

ListView可以说是android开发中非常非常常用的一个控件,今天整理了一下,ListView相关的东西,记录于此.(很奇怪,总感觉只有自己总结写过的东西才是属于自己的,看别人看多了,却总是心中不慎踏实) ListView在使用中有两个作用: 一是将数据绑定到ListView的item:而是ListView的item对用户点击时间作出响应,常用的有onClickListener与onLongClickListener,当然当你需要计算用户点击的具体位置再做出响应时,可以先实现onTouch

ListView控件详解

在Windows的资源管理器中,文件夹或文件信息可以分别以大图标或小图标的方式显示如图: 这样的洁面效果是如何实现的?这就要用到ImageList控件和ListView控件 ImageList控件的属性                  属                                   性                  说                                   明 Images 存储在图像列表中的所有图像 ImageSize 存储在图像列表

Android listview 侧滑 SwipeListView 详解 实现微信,QQ等滑动删除效果

转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/28508769 今天看别人项目,看到别人使用了SwipeListView,Google一把,果然github上的,也参考了csdn上的几篇文章,然后自己写了个例子,分享给大家. 效果图: 嗯,看一眼SwipeListView的参数的设置: If you decide to use SwipeListView as a view, you can define it in your

WebView使用详解(二)——WebViewClient与常用事件监听

登录|注册     关闭 启舰 当乌龟有了梦想-- 目录视图 摘要视图 订阅 异步赠书:Kotlin领衔10本好书      免费直播:AI时代,机器学习如何入门?      程序员8月书讯      每周荐书:Java Web.Python极客编程(评论送书) WebView使用详解(二)--WebViewClient与常用事件监听 2016-05-28 11:24 20083人阅读 评论(13) 收藏 举报  分类: 5.andriod开发(148)  版权声明:本文为博主原创文章,未经博主

Android优化系列之ListView优化详解

本文内容:adapter,listview的优化,RecycleBi,n优化情况对比,google大会推荐优化, 实现ListView的过程,Adapter起到了至关重要的作用,不仅仅因为getview()方法.那么,先从Adapter说起~ Adapter: 它在ListView和数据源之间起到桥梁的作用,避免listview和数据源直接接触,而导致因为数据源的复杂性使listview显得臃肿. Adapter,适配器,把复杂的数据源适配给listview,很容易联想到适配器模式.   下面是

【Android】Android软件开发之ListView 详解

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://xys289187120.blog.51cto.com/3361352/657171 ListView的使用方法 ListView是Android软件开发中非常重要组件之一,基本上是个软件基本都会使用ListView ,今天我通过一个demo来教大家怎么样使用ListView组件 绘制出漂亮的列表,说道ListView就不得不说Adapter适配器,因为只有通过Adapter才可

(转) Android ListView 详解

ListView的使用方法 ListView是Android软件开发中非常重要组件之一,基本上是个软件基本都会使用ListView ,今天我通过一个demo来教大家怎么样使用ListView组件 绘制出漂亮的列表,说道ListView就不得不说Adapter适配器,因为只有通过Adapter才可以把列表中的数据映射到ListView中. 在android的开发中最Adapter 一共可以分为ArrayAdapter<T>,BaseAdapter, CursorAdapter,HeaderVie