• Android:ListViewAdapter


    MainActivity:

      

    package com.wyl.listview;
    
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.widget.ArrayAdapter;
    import android.widget.ListAdapter;
    import android.widget.ListView;
    import android.widget.SimpleAdapter;
    
    public class MainActivity extends Activity {
    	ListView listview;
    	ListAdapter adapter;
    	ListAdapter la;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            init();
            
        }
    	private void init() {
    		listview = (ListView) findViewById(R.id.listview01);
    ////		adapter.a
    //		//数据源,
    //		//1.新建适配器
    //		//
    //		String[] a = {"the first","the second","第三个","张雅岚"};
    ////		List<String> b = new ArrayList<String>();
    ////		b.add("张雅岚");
    ////		b.add("wyl");
    //		adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, a);
    //		listview.setAdapter(adapter);
    		
    		
    		
    //		
    //		String[] c = {"one","two","three","four"};
    //		adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1 , c);
    //		System.out.println("=============");
    //		listview.setAdapter(adapter);
    //		la = new SimpleAdapter(this, getData(), resource, from, to)
    		
    //		
    //		public SimpleAdapter (Context context, List<? extends Map<String, ?>> data, int resource, String[] from, int[] to)
    //
    //		Added in API level 1
    //		Constructor
    //
    //		Parameters
    //		context	The context where the View associated with this SimpleAdapter is running
    //		data		  A List of Maps. Each entry in the List corresponds to one row in the list. 
    //				    The Maps contain the data for each row, and should include all the entries specified in "from"
    //		resource	  Resource identifier of a view layout that defines the views for this list item. The layout 
    //					file should include at least those named views defined in "to"
    //		from	     A list of column names that will be added to the Map associated with each item.
    //		to	          The views that should display column in the "from" parameter. These should all be TextViews. 
    //					The first N views in this list are given the values of the first N columns in the from parameter.
    		
    		la = new SimpleAdapter(this,getData(),R.layout.item,new String[]{"pic","text"},new int[]{R.id.pic,R.id.text});
    		
    		listview.setAdapter(la);
    		
    		
    		
    		
    		
    		
    		
    	}
    	private List<Map<String, Object>> getData() {
    		
    		List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
    		Map map = new HashMap<String,Object>();
    		for(int i=0;i<10;i++){
    			map.put("pic", R.drawable.ic_launcher);
    			map.put("text", "wyl"+i);
    			System.out.println("i:"+i);
    			list.add(map);
    			
    		}
    		
    		return list;
    		
    	}
    
        
    }
    

      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/pic"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="15dp"
            android:src="@drawable/ic_launcher"
            />
    	<TextView 
    	    android:id="@+id/text"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            
            android:textSize="20sp"
            android:textColor="#000000"
            android:text="demo"
            />
    </LinearLayout>
    

      PS:SimpleAdapter的构造方法的参数解释:

    new SimpleAdapter(context,data,resource,from,to)
    context: 上下文
    data: 数据源(List<? extends Map<String,?>>data) 一个Map所组成的List集合
    每一个Map都会去对应ListView列表中的一行
    每一个Map(键 - 值对)中的键必须包含所有在from中所指定的值
    resource: 列表项的布局文件ID
    from: Map中的键名
    to: 绑定数据视图中的ID,与from成对应关系
    -----------------------------------
    context:一般指当前的activity,用this即可;
    data:一个数据源,本课程的重点,创建Map并添加信息;
    resource:一个布局文件ID,表示listview中每一个item的布局方式;
    from:Map的键名,listview中的item内部元素对应的名字;
    to:resource布局文件中,每个元素的ID。

    这里说说我自己对这这五个参数的理解。

    我们可以发现,第三个参数和第五个参数都跟所要显示出来的具体有关,如左侧显示图片,右侧显示备注。可能我们会想,为什么

    已经有了第五个参数,即那个图片和备注的R.id.xx属性的数组,那为什么还要再加上第三个参数resouce呢?有了更具体的的R.id.xx属性

    那么我们就能够知道这个数组所表示的属性所在的layout布局了,也就完全没必要再给出第二个参数了。其实问题就出在这里,因为第五个

    参数是一个int 类型的数组,在安卓系统根不知道这些数字到底是对应着文字或者图片。如果没有第三个参数,那么android就不知道本例

    中第三个参数数组中的下标为0的对应的是图片,那么系统只能够根据第二个参数绑定的值,即

    map.put("pic", R.drawable.ic_launcher);
    

      这行代码中的R.drawable.ic_launcher,这个值实际上是一个16进制数,在gen.具体包名.R.java中的

    public static final class drawable {
            public static final int ic_launcher=0x7f020000;
            public static final int yl=0x7f020001;
        }
    

     这行代码中的0x7f020000这个16进制数,对应的10进制为:2130837504,那么运行这个安卓应用时显示的不是图片,而这个10进制

    数:2130837504。

    由此:我们要特别注意:第3,4,5个参数一一对应。如果不对应起来可能发生意想不到的结果。

     有个具体的例子的图如下:

  • 相关阅读:
    笔记64 Spring Boot快速入门(四)
    笔记63 Spring Boot快速入门(三)
    笔记62 Spring Boot快速入门(二)
    笔记61 Spring Boot快速入门(一)
    笔记60 Spring+Mybatis整合
    笔记59 Spring+Hibernate整合(二)
    【转】单点登录原理与实现
    【转】大型网站架构演变和知识体系
    Eclipse下绿色安装插件Aptana、Swing
    zeromq源码分析笔记之准备(0)
  • 原文地址:https://www.cnblogs.com/Sunnor/p/4711476.html
Copyright © 2020-2023  润新知