222613205.jpg


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;
    }
}

232100121.jpg


这种格式简单,统一,适合用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));
}