Android之UI学习篇十二:ListView控件学习(二)
来源:互联网 发布:唐朝 阿拉伯 知乎 编辑:程序博客网 时间:2024/06/10 04:20
上篇利用LIstView实现了一个简单的例子,这篇以一个更贴近项目的例子来分享一下ListView的使用方法,模拟疼痛的微信客户端list界面.
先看看实现效果:
工程结构目录:
这个案例中使用自定义的item.xml布局文件,在Activity中使用simpleAdapter和它的setViewBinder()方法来配置和绑定数据。
以下是源代码:
首先看一下布局文件
main.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <ListView android:paddingTop="10dip" android:layout_width="fill_parent" android:layout_height="fill_parent" android:id="@+id/MyListView"/></LinearLayout>
item.xml (采用线性布局,利用weight权重属性控制显示比例)
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/MyListItem" android:layout_width="fill_parent" android:layout_height="wrap_content" android:paddingTop="5dip" android:orientation="horizontal" > <LinearLayout android:id="@+id/ItemPic" android:layout_width="fill_parent" android:layout_height="fill_parent" android:gravity="left" android:layout_weight="5"> <ImageView android:id="@+id/image" android:layout_width="wrap_content" android:layout_height="wrap_content"/> </LinearLayout> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical" android:layout_weight="1"> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center_vertical" android:layout_weight="1"> <TextView android:id="@+id/name" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textSize="15dip" android:textColor="@android:color/white" android:layout_weight="1"/> <TextView android:id="@+id/time" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textSize="12dip" android:textColor="@android:color/tertiary_text_light" android:layout_weight="3"/> </LinearLayout> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center_vertical" android:layout_weight="1"> <TextView android:id="@+id/content" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textColor="@android:color/tertiary_text_light" android:textSize="12dip" > </TextView> </LinearLayout> </LinearLayout></LinearLayout>
MyData.java (放置模拟数据)
package com.test.activity;public class MyData {//头像数组public static int[] images = new int[]{R.drawable.pic001,R.drawable.pic002,R.drawable.pic003,R.drawable.pic004,R.drawable.pic005,R.drawable.pic006,R.drawable.pic007,R.drawable.pic008,R.drawable.pic009,R.drawable.pic010,R.drawable.pic011,R.drawable.pic012,R.drawable.pic013,R.drawable.pic014,R.drawable.pic015,R.drawable.pic016};//昵称数组public static String[] names = new String[]{"爱~未字","心海贝因","初音未来","麻子","英子","飞来耶老师","萌海连上","lovvww","love story","功夫只","海盗","玩那个","青蛙昂子","暮烟","孩子们","钢琴师"};//时间数组public static String[] times = new String[]{"凌晨00:23","19:00","19:04","昨天14:20","下午15:56","中午12:43","周一 晚上","周一 晚上","昨天10:23","周四 19:00","周五19:04","昨天14:20","凌晨01:56","中午11:43","周一 早上","周四中午"};//会话数组public static String[] contents = new String[]{"我喜欢你!","晚上好在,在忙什么呢?","不可以,我会所了","这是一场永不不停息的战争","嗯,行!","OK的啦","加油告白","开心快乐","新年快乐!恭喜发财","恭喜发财!快拿红包来","命运的签或者改变不了","不能说的秘密","I Gusss","Say it right","NONNO","周周年"};}
MainActivity.java (重头戏)
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); }}
- Android之UI学习篇十二:ListView控件学习(二)
- Android之UI学习篇十一:ListView控件学习(一)
- Android学习之 UI--ListView
- Android学习之ListView控件
- Android控件学习之ListView
- 【android基础学习之二】——基础控件ListView
- Android UI学习篇:ListView
- Android 学习笔记 二十二 之Handler
- Android UI控件学习笔记(二)
- Android UI学习 - ListView
- Android UI学习 - ListView
- Android UI学习 - ListView
- Android+UI学习+-+ListView
- Android UI学习 - ListView
- Android之UI学习篇十三:Gallery控件学习
- Android学习笔记十二之Android基础UI三
- Android学习笔记十二之Android基础UI三
- 1.12Android 学习+进度之十二-聊天UI升级
- Java Channel解析与实例
- java设计模式——迭代器模式
- java 垃圾回收相关总结 【思维导图】
- 百度笔试题:一个已经排序好的很大的数组,现在给它划分成m段,每段长度不定,段长最长为k,然后段内打乱顺序,请设计一个算法对其进行重新排序
- 命名规则
- Android之UI学习篇十二:ListView控件学习(二)
- java 类的初始化1
- 《高质量程序设计指南——C/C++》第14章 C++函数的高级特性
- cmyk图片转为rgb图片
- EditPlus中配置java命令工具
- Tomcat 的三种(bio,nio.apr) 高级 Connector 运行模式
- Java 并发:Executors 和线程池
- JAVA里301永久重定向的实现 .
- ZOJ 2108 Elevator