SimpleAdapter 继承了BaseAdapter,是一个封装好的类,我们只要在外部给他提供参数,他就可以完成内部实现,代码如下:
public class MainActivity extends Activity { int[] p_w_picpathID = { R.drawable.ic_launcher, R.drawable.ic_launcher1, R.drawable.ic_launcher2, R.drawable.ic_launcher3, R.drawable.ic_launcher4 }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ListView listView = (ListView) findViewById(R.id.listView1); List<HashMap<String, Object>> data = new ArrayList<HashMap<String, Object>>(); for (int i = 0; i < 5; i++) { HashMap<String, Object> map = new HashMap<String, Object>(); map.put("title", "title" + i); map.put("subtitle", "subtitle" + i); map.put("time", "time" + i); map.put("p_w_picpath", p_w_picpathID[i]); data.add(map); } String[] from = { "title", "subtitle", "time", "p_w_picpath" }; int[] to = { R.id.textView1, R.id.textView2, R.id.textView3, R.id.p_w_picpathView1 }; SimpleAdapter adapter = new SimpleAdapter(this, data, R.layout.listitem, from, to); listView.setAdapter(adapter); // SimpleAdapter(Context context, List<? extends Map<String, ?>> // data, int resource, String[] from, int[] to) // 构造方法需要传人的参数(上下文, 装有Map的容器对象,子布局,map中的key值,与key要一一对应的控件资源ID) } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } }
这种格式简单,统一,适合用ArrayAdapter,数组适配器。
泛型可以是String类型,代码如下:
ArrayList<String> list = new ArrayList<String>(); for (int i = 0; i < 10; i++) { list.add("title" + i); } //。。。。。。 ArrayAdapter adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,list); //这里使用的是android sdk提供的simple_list_item_1子布局 listView.setAdapter(adapter);
以上也可以另一种方法实现,继承ListActivity,就不需要在onCreate()方法里setContentView(textView);
ArrayList<String> mData = new ArrayList<String>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); for (int i = 0; i < 5; i++) { mData.add("title" + i); } setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, mData)); }