Android之UI学习篇十二:ListView控件学习(二)上篇利用LIstView实现了一个简单的例子,这篇以一个更贴近项目
Android之UI学习篇十二:ListView控件学习(二)
上篇利用LIstView实现了一个简单的例子,这篇以一个更贴近项目的例子来分享一下ListView的使用方法,模拟疼痛的微信客户端list界面.
先看看实现效果:

工程结构目录:

这个案例中使用自定义的item.xml布局文件,在Activity中使用simpleAdapter和它的setViewBinder()方法来配置和绑定数据。
以下是源代码:
首先看一下布局文件
main.xml
package com.test.activity;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import com.test.activity.*;import android.app.Activity;import android.content.res.Resources;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.os.Bundle;import android.util.Log;import android.view.View;import android.widget.AdapterView;import android.widget.ImageView;import android.widget.ListView;import android.widget.SimpleAdapter;import android.widget.SimpleAdapter.ViewBinder;public class MainActivity extends Activity {@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); ListView listView = (ListView)findViewById(R.id.MyListView); System.out.println(listView); Log.i("MainActivity", "111"); //生成适配器,数组 ArrayList<HashMap<String,Object>> dataList = new ArrayList<HashMap<String,Object>>(); for(int i=0;i<16;i++) { HashMap<String, Object> map = new HashMap<String, Object>(); Resources res=getResources(); //将Drawable图片资源转化为Bitmap对象 Bitmap bmp=BitmapFactory.decodeResource(res, MyData.images[i]); map.put("image", bmp); map.put("name", MyData.names[i]); map.put("time", MyData.times[i]); map.put("content", MyData.contents[i]); dataList.add(map); } //生成适配器,数组 SimpleAdapter simpleAdapter = new SimpleAdapter(MainActivity.this, dataList, R.layout.item, new String[]{"image","name","time","content"}, new int[]{R.id.image,R.id.name,R.id.time,R.id.content}); //绑定数据到listView simpleAdapter.setViewBinder(new ViewBinder() { public boolean setViewValue(View view, Object data, String textRepresentation) { //判断是否为我们要处理的对象 if(view instanceof ImageView && data instanceof Bitmap){ ImageView iv = (ImageView) view; iv.setImageBitmap((Bitmap) data); return true; }else return false; } }); listView.setAdapter(simpleAdapter); }}