lgzaaron 2014-07-17
博客文章:http://www.cnblogs.com/loulijun/archive/2011/12/27/2303488.html
SimpleAdapter是扩展性最好的适配器,可以定义各种你想要的布局,而且使用很方便
SimpleAdapter(Contextcontext,List<?extendsMap<String,?>>data,intresource,String[]from,int[]to)
参数context:上下文,比如this。关联SimpleAdapter运行的视图上下文
参数data:Map列表,列表要显示的数据,这部分需要自己实现,如例子中的getData(),类型要与上面的一致,每条项目要与from中指定条目一致
参数resource:ListView单项布局文件的Id,这个布局就是你自定义的布局了,你想显示什么样子的布局都在这个布局中。这个布局中必须包括了to中定义的控件id
参数from:一个被添加到Map上关联每一个项目列名称的列表,数组里面是列名称
参数to:是一个int数组,数组里面的id是自定义布局中各个控件的id,需要与上面的from对应
SimpleAdapter可以使用自定义的ListView,然后setContentView即可。也可以直接使用系统自带的ListAcitivity,该ListActivity实现了ListView,显示ListView的时候做了很多优化。
ListActivity直接extendsListActivity即可,不需要在setContentView了
<?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="horizontal" > <ImageView android:id="@+id/img" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="3px" /> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical" > <TextView android:id="@+id/title" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textSize="16sp" /> <TextView android:id="@+id/info" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textSize="10sp" /> </LinearLayout> </LinearLayout>
package com.loulijun.demo13; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import android.app.ListActivity; import android.os.Bundle; import android.widget.SimpleAdapter; public class Demo13Activity extends ListActivity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); SimpleAdapter adapter = new SimpleAdapter(this, getData(), R.layout.main, new String[] { "img", "title", "info" }, new int[] { R.id.img, R.id.title, R.id.info }); setListAdapter(adapter); } private List<Map<String, Object>> getData() { List<Map<String, Object>> list = new ArrayList<Map<String, Object>>(); Map<String, Object> map = new HashMap<String, Object>(); map.put("img", R.drawable.e001); map.put("title", "小宗"); map.put("info", "电台DJ"); list.add(map); map = new HashMap<String, Object>(); map.put("img", R.drawable.e002); map.put("title", "貂蝉"); map.put("info", "四大美女"); list.add(map); map = new HashMap<String, Object>(); map.put("img", R.drawable.e04b); map.put("title", "奶茶"); map.put("info", "清纯妹妹"); list.add(map); map = new HashMap<String, Object>(); map.put("img", R.drawable.e04e); map.put("title", "大黄"); map.put("info", "是小狗"); list.add(map); map = new HashMap<String, Object>(); map.put("img", R.drawable.e11a); map.put("title", "hello"); map.put("info", "every thing"); list.add(map); map = new HashMap<String, Object>(); map.put("img", R.drawable.e11d); map.put("title", "world"); map.put("info", "hello world"); list.add(map); return list; } }
<?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="vertical" > <ListView android:id="@+id/listview" android:layout_width="fill_parent" android:layout_height="wrap_content" ></ListView> </LinearLayout>
public class Demo13Activity extends Activity { private ListView lv; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.mylist); lv = (ListView)findViewById(R.id.listview); SimpleAdapter adapter = new SimpleAdapter(this, getData(), R.layout.main, new String[] { "img", "title", "info" }, new int[] { R.id.img, R.id.title, R.id.info }); //setListAdapter(adapter); lv.setAdapter(adapter); }