Android之UI学习篇十二:ListView控件学习(2)

Android之UI学习篇十二:ListView控件学习(二)上篇利用LIstView实现了一个简单的例子,这篇以一个更贴近项目

Android之UI学习篇十二:ListView控件学习(二)

上篇利用LIstView实现了一个简单的例子,这篇以一个更贴近项目的例子来分享一下ListView的使用方法,模拟疼痛的微信客户端list界面.

先看看实现效果:

Android之UI学习篇十二:ListView控件学习(2)


工程结构目录:

Android之UI学习篇十二:ListView控件学习(2)


这个案例中使用自定义的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);    }}