安卓重要组件#3--ListView的另外2种适配器类ArrayAdapter和SimpleAdapter

上一篇博文讲述的ListView的优化以及数据封装,接下来我为大家介绍另外2种常见的适配器类。(这次主要介绍的适配器主要是因为我们程序员有时候需要看别人代码,如果有人用了这2种适配器我们至少要能看懂,实际的还是掌握baseAdapter就可以了)。如果博文哪里的写的不对或者大家有什么疑问可以给我留言。前2篇博文有介绍的了listView的基本用法,重复的我在这里就不多说了。这是上面几篇有关listView博文的链接http://7735447.blog.51cto.com/7725447/1270533

1:ArrayAdapter

(1):首先我们在布局页面拉一个listView控件到界面来幷填充整个屏幕(记住高度要设置成固定

(2) :然后在代码里面找到listView对象并创建一个ArrayAdapter的对象

ListView listView = (ListView) findViewById(R.id.listView1);
ArrayAdapter<T> adapter = new ArrayAdapter<T>(context, textViewResourceId, objects);

(3) :我们来看下这个类需要什么参数,这里说明下ArrayAdapter类所用的范围比较小,只能以  TextView布局来充当行布局,如果我们要做的界面像电话本那样只有联系人时候就可以使用这个适配器,它没有像baseAdapter那样需要重写那么多的方法只需创建一个对象并传入参数即可.首先来看下第一个参数,这个类需要制定一个范型,这个范型就是我们所需要填写数据的类型,例如String类。第二个参数是activity类,只要使用主类自身的引用this即可。第三个参数是就是行布局的id,通过R文件来得到行布局(此行布局只能用TextView,大家创建新布局直接用TextView创建),最后一个参数就是每个行布局所显示内容的集合,可以传一个数组也可以传一个list容器。具体代码如下(数组创建就不放在这里了)

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.list, mStrings);

(4)  :最后吧adapter放入到listView即可

listView.setAdapter(adapter);

大功告成,结果如下

安卓重要组件#3--ListView的另外2种适配器类ArrayAdapter和SimpleAdapter

2:SimpleAdapter

(1):SimpleAdapter和arrayAdapter类似也是直接创建一个对象

SimpleAdapter adapter=new SimpleAdapter(this, data, R.layout.list, from, to);

第一个参数一样是主类自身的引用,第二个参数要求是一个list容器,里面必须放一个HashMap容器,hashMap容器的键类型一定是String

List<HashMap<String, Object>> data=new ArrayList<HashMap<String,Object>>();

然后大家可以写一个for循环将每个行布局所需要的数据全部放入list容器中

private int[] mImage=new int[]{R.drawable.a,R.drawable.b,R.drawable.c,R.drawable.d};

private double[] mPrice=new double[]{1000,1100,1200,1300};

private String[] mAddress=new String[]{"厦门","深圳","上海","北京"};

for (int i = 0; i < 4; i++) {

HashMap<String, Object> map=new HashMap<String, Object>();

map.put("p_w_picpath",mImage[i]);

map.put("title", "新版HTC"+i);

map.put("price", mPrice[i]);

map.put("sold", "已售:"+(i+1)*100);

map.put("address",mAddress[i]);

data.add(map);

}

第三个参数为行布局的id(具体的布局如下图)

安卓重要组件#3--ListView的另外2种适配器类ArrayAdapter和SimpleAdapter

第4个参数就是map容器里面的键值

String[] from=new String[]{"p_w_picpath","title","price","sold","address"};

第5个参数就是map容器里面键所对应值

int[] to=new int[]{R.id.p_w_picpathView1,R.id.textView1,R.id.textView2,R.id.textView3,R.id.textView4};

最后不要忘记将adapter放入listView中

listView.setAdapter(adapter);

好了大功告成,结果如下图(上面那些控件是为了模仿淘宝页面做的)

安卓重要组件#3--ListView的另外2种适配器类ArrayAdapter和SimpleAdapter

到这里基本就为大家介绍完了arrayadapter和simpleadapter,完整代码我会上传附件。下次我为大家介绍如何在已经成型好的listView里面添加和删除行布局,如何在listView头部和尾部添加不同于行布局的布局。未完待续。。。。。。


附件:http://down.51cto.com/data/2363333