Android开发经验总结——ListView的使用
Android中ListView这个组件比较常用,但对初学者来说,又比较难掌握,在此分享一下我的使用经验。
ListView是以列表的形式展示数据,这里面有三个要素:数据、视图、适配器。
常用的适配器有三种:ArrayAdapter, SimpleAdapter, SimpleCursorAdapter。
其中SimpleAdapter扩展性最好,几乎能实现所有展示需求的列表,我在实际开发中用的全是这个,这里也只介绍这个。
假设要实现如下效果的列表视图:

下面一步步来实现。
首先设计视图,主要设计ListView里面item的显示效果,在layout中创建item.xml文件,如下:
?
此xml文件定义列表中每个项目的布局,如果想要不同的布局,修改此文件的布局即可。
这个文件中给每个需要在程序中动态赋值的地方都取了id,看到后面的代码时,注意对应关系。
?
然后是适配器和数据,这两个联系比较紧密,就放一起了。
先上代码:
?
- ?

- ?

- ?

- ?

- mAdapter?=?new?SimpleAdapter(this,?pictureList,?R.layout.picturelist,?mFrom,?mTo){ ??????@Override?? ??????public?View?getView(final?int?position,?View?convertView,?ViewGroup?parent)?{ ??????????View?view?=?super.getView(position,?convertView,?parent); ??????????@SuppressWarnings("unchecked") ??????????final?HashMap<String,Object>?map?=?(HashMap<String,?Object>)?this.getItem(position); ??????????ImageView?imageView?=?(ImageView)view.findViewById(R.id.img); ??????????FileInputStream?fin; ??????????try?{ ??????????????if(map.get("img")?==?null){ ??????????????????throw?new?IOException(); ??????????????} ??????????????fin?=?getApplicationContext().openFileInput((String)?map.get("img")); ??????????????imageView.setImageDrawable(Drawable.createFromStream(fin,?"src")); ??????????????fin.close(); ??????????}?catch?(FileNotFoundException?e)?{ ??????????????imageView.setImageResource(R.drawable.default); ??????????}?catch?(IOException?e)?{ ??????????????imageView.setImageResource(R.drawable.default); ??????????} ??????????return?view; ??????} ??};??
