Android-类qq功能(三)
来源:互联网 发布:网络出现问号 编辑:程序博客网 时间:2024/05/22 12:07
在上篇博客中,给listview填充值用到了Message_RelationAdapter。
这个类的作用就是给listview赋值:
/**联系人列表的adapter * 创建时间:2015年11月5日 * 版本:v1.0 * @author liushuo */package com.jrkj.adapter;import java.util.ArrayList;import java.util.HashMap;import com.jrkj.ui.MessageChatActivity;import com.jrkj.ui.R;import com.nostra13.universalimageloader.core.DisplayImageOptions;import com.nostra13.universalimageloader.core.ImageLoader;import android.content.Context;import android.content.Intent;import android.graphics.Bitmap;import android.view.LayoutInflater;import android.view.View;import android.view.View.OnClickListener;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.TextView;public class Message_RelationAdapter extends BaseAdapter {private Context context = null;private int resources;private ArrayList<HashMap<String, Object>> list = null;private String[] from;private int[] to;private DisplayImageOptions options;public Message_RelationAdapter(Context context, int resources,ArrayList<HashMap<String, Object>> list, String[] from, int[] to) {super();this.context = context;this.resources = resources;this.list = list;this.from = from;this.to = to;// 图片的缓存初始化options = new DisplayImageOptions.Builder().showImageOnLoading(R.drawable.ic_launcher)/* 加载图片的时候显示正在加载的图 */.showImageOnFail(R.drawable.ic_launcher)/* 加载图片失败后显示这个张图 */.cacheInMemory(true)/* 缓存至内存 */.cacheOnDisk(true)/* 缓存值SDcard */.bitmapConfig(Bitmap.Config.RGB_565).build();}@Overridepublic int getCount() {return list.size();// list的行数}@Overridepublic Object getItem(int arg0) {return null;}@Overridepublic long getItemId(int itemid) {return itemid;}@Overridepublic View getView(int position, View convertView, ViewGroup arg2) {/** * 首先判断是不是第一次创建Item,若是,则创建convertView实例和ViewHolder对象,并通过fandViewById()方法 * 获得每一行中所有空间的实例放在ViewHolder对象中,然后对convertView设置标签 */ViewHolder viewHolder = null;// 注意convertView不是随意创建的,需要有LayoutInflater,根据list_item布局文件创建if (convertView == null) {LayoutInflater inflater = LayoutInflater.from(context);convertView = inflater.inflate(resources, null); // 这里的null是一个ViewGroup形参,基本用不上viewHolder = new ViewHolder(convertView);convertView.setTag(viewHolder);} else {viewHolder = (ViewHolder) convertView.getTag(); // 通过getTag()方法获得附加信息}//绑定图片,缓存ImageLoader.getInstance().displayImage(list.get(position).get(from[0]).toString(), viewHolder.ctPhoto,options);viewHolder.ctName.setText((String) (list.get(position).get(from[1])));//name绑定数据viewHolder.ctSign.setText((String) (list.get(position).get(from[2])));//标签绑定数据//图片点击事件,进入聊天viewHolder.ctPhoto.setOnClickListener(new ImageListener(position));return convertView; // 把这个每一行的View对象返回}/** * getView方法为系统在绘制每一行时调用,在此方法中要设置需要显示的文字,图片, 以及为按钮设置监听器。 * * 形参意义: *position:当前绘制的item 的位置(ID); * convertView,系统在绘制ListView时,如果是绘制第一个Item(即第一行),convertView为null,当 * 绘制第二个及以后的Item的convertView不为空,这时可以直接利用这个convertView的getTag()方法,获得各控件 * 的实例,并进行相应的设置,这样可以加快绘图速度。 * * 为了为convertView设置附加信息Tag,这里创建一个内部类ViewHolder,用于盛放一行中所有控件的引用,将*这些引用 * 实例化后作为convertView的附加信息。 */class ViewHolder {public ImageView ctPhoto = null;public TextView ctName = null;public TextView ctSign = null;// 从这里可以看出,from和to数组彼此之间的元素应该一一对应,同时from和to各自元素内部的顺序不同,最后ListView// 呈现的位置也会不同!//获取控件实例public ViewHolder(View convertView) {//根据activity中获取的控件id获取实例 ctPhoto = (ImageView) convertView.findViewById(to[0]);ctName = (TextView) convertView.findViewById(to[1]);ctSign = (TextView) convertView.findViewById(to[2]);}}//头像点击事件class ImageListener implements OnClickListener {private int position;public ImageListener(int position) {this.position = position;}// listItem点击事件@Overridepublic void onClick(View v) {String photoRes=list.get(position).get(from[0]).toString();String strName = list.get(position).get(from[1]).toString();//Toast.makeText(context, strName + " is Clicked", Toast.LENGTH_LONG).show();Intent intent = new Intent();intent.putExtra("photoRes", photoRes);intent.putExtra("strName", strName);intent.setClass(v.getContext(), MessageChatActivity.class);//进入MessageChatActivityv.getContext().startActivity(intent);}}}
创建好了adapter,就可以在activity中调用,然后填充了listview。
运行效果:
0 0
- Android-类qq功能(三)
- Android-类qq功能(一)
- Android-类qq功能(二)
- Android-类qq功能(四)
- C# GDI+ 简单绘图 (三)----QQ截图功能
- 类似QQ贴边掩藏功能的实现(三)
- android调用qq聊天功能
- android调用qq聊天功能
- 【Android】侧滑菜单栏功能的实现(类似于QQ)
- Android之动画ViewPager小结(QQ续三)
- C# GDI+ 简单绘图 (三) 实现仿QQ截图功能
- C# GDI+ 简单绘图 (三) 实现仿QQ截图功能
- java网络编程(三) QQ聊天功能类似的C/S建立
- Qt(三)--- 实现QQ登陆界面头像状态栏的功能
- Android QQ空间说说回复功能简介
- Android开发之QQ直接登陆功能
- Android 实现最新版QQ图像裁剪功能
- Android QQ空间说说回复功能简介
- INI文件操作类
- java 生成excel根据jxl
- 排序——基本排序算法
- eclipse新建maven
- 四大域和九大隐式对象
- Android-类qq功能(三)
- js 数组和对象
- NGUI 的grid提高显示性能
- Dapper,大规模分布式系统的跟踪系统
- 讨厌的git
- size_type
- 一次socket编程中犯下的错误
- 黑马程序员—Java基础—集合
- .net wifi连接的和修改IP等各项操作