因此,需要用Map來對應List中的一行,Map中的一個鍵值對,對應於一行中的一個屬性,通過一個鍵名,可以得到一個值,這個值不一定是String,還可以是其他類型的數據。
SimpleAdapter(Context context, List<? extends Map<String, ?>> data, int resource, String[] from, int[] to)
SimpleAdapter的構造方法有5個參數。
第1個是上下文對象,第3個是每一行數據的佈局文件。
第2個是保存有每一行數據的Map構成的List對象,也就是說,每一行數據裏的每一個屬性都由它的名字和它的值構成一個鍵值對,每一行的多個鍵值對構成這一行的一個Map對象,再由多行的多個Map對象夠成一個List對象。
第3個String數組是鍵的集合,第4個int數組是佈局文件中控件ID的集合,也就是說,從String數組裏的鍵名去找到值,然後將這個值賦給在int數組裏位置對應的控件。
因此,對於from,如果from裏出現的鍵名是Map裏沒有的,將不會有數據顯示,因爲通過這個錯誤的鍵找不到值。form數組裏的字符串,一定要是Map裏的鍵的值。
package tjj.ListViewTest;
import java.util.ArrayList;
import java.util.HashMap;
import android.app.ListActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Toast;
public class ListViewTestActivity extends ListActivity
{
ArrayList<HashMap<String, String>> list = new ArrayList<HashMap<String, String>>();
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
HashMap<String, String> map1 = new HashMap<String, String>();
HashMap<String, String> map2 = new HashMap<String, String>();
HashMap<String, String> map3 = new HashMap<String, String>();
map1.put("user_name", "tjj");
map1.put("user_good", "programing");
map2.put("user_name", "hello");
map2.put("user_good", "sport");
map3.put("user_name", "world");
map3.put("user_good", "loving");
list.add(map1);
list.add(map2);
list.add(map3);
SimpleAdapter listAdapter = new SimpleAdapter(this,
list,
R.layout.user,
new String[] { "user_name", "user_good" },
new int[] { R.id.user_name, R.id.user_ip });
setListAdapter(listAdapter);
}
@Override
protected void onListItemClick(ListView l, View v, int position, long id)
{
System.out.println(position);
HashMap<String, String> map = list.get(position);
String name = map.get("user_name");
String good = map.get("user_good");
Toast.makeText(this, name + ":" + good, Toast.LENGTH_SHORT).show();
super.onListItemClick(l, v, position, id);
}
}