博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
万能ViewHolder和基类适配器
阅读量:5994 次
发布时间:2019-06-20

本文共 3526 字,大约阅读时间需要 11 分钟。

package com.example.utils;import android.content.Context;import android.util.SparseArray;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;public class ViewHolder {    private SparseArray
mViews; private int mPosition; private View convertView; // 需要的参数 public ViewHolder(Context context, ViewGroup parent, int layoutId, int position) { /** * 进行初始化设置 */ mViews = new SparseArray
(); mPosition = position; convertView = LayoutInflater.from(context).inflate(layoutId, parent, false); convertView.setTag(this); } // viewHolder入口 public static ViewHolder get(Context context, View convertView, ViewGroup parent, int layoutId, int position) { // 如果为空则new出新的 if (convertView == null) { return new ViewHolder(context, parent, layoutId, position); } else { ViewHolder holder = (ViewHolder) convertView.getTag(); //更新position holder.mPosition = position; return holder; } } /** * 通过id获取控件 * @param id * @return */ public
T getView(int id){ View view = mViews.get(id); if(view == null){ view = convertView.findViewById(id); mViews.put(id, view); } return (T) view; } public View getConvertView() { return convertView; } public int getPosition(){ return mPosition; }}

基类适配器

package com.example.utils;import java.util.List;import android.content.Context;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;public abstract class CommonAdapter
extends BaseAdapter { protected List
data; protected Context mContext; public CommonAdapter(List
data,Context mContext){ this.data = data; this.mContext = mContext; } @Override public int getCount() { // TODO Auto-generated method stub return data.size(); } @Override public Object getItem(int position) { // TODO Auto-generated method stub return data.get(position); } @Override public long getItemId(int position) { // TODO Auto-generated method stub return position; } @Override public abstract View getView(int position, View convertView, ViewGroup parent); }
package com.example.bluetooth;import java.util.List;import com.example.utils.CommonAdapter;import com.example.utils.ViewHolder;import android.content.Context;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.TextView;public class MyAdapter extends CommonAdapter
{ public MyAdapter(List
data, Context mContext) { super(data, mContext); } @Override public View getView(int position, View convertView, ViewGroup parent) { //初始化 ViewHolder holder = ViewHolder.get(mContext, convertView, parent, R.layout.item, position); //设置值 TextView name = holder.getView(R.id.item_name); TextView address = holder.getView(R.id.item_address); name.setText(data.get(position).getName()); address.setText(data.get(position).getAddress()); //返回注意getConvertView return holder.getConvertView(); }}

 

转载于:https://www.cnblogs.com/84126858jmz/p/5411334.html

你可能感兴趣的文章
tab
查看>>
RandomAccessFile
查看>>
在java层面获取android的ABI
查看>>
Mysql 不同条件进行修改存储
查看>>
百度地图给map添加右键菜单(判断是否为marker)
查看>>
线程的状态
查看>>
CentOS 6.4上通过yum安装Nagios-3.5.0 [服务端/server端]
查看>>
ODL Beryllium (Be) - The Fourth Release of OpenDaylight PRODUCTION-READY OPEN SDN PLATFORM
查看>>
Cortex-M0 ARM-GCC 编译链接选项
查看>>
到达一个数字的最少移动步数,Reach a Number
查看>>
JFinal中EhCache利用RMI方式分布式缓存配置
查看>>
windows搭建React-native环境之图文教程
查看>>
谈传奇世界3D版
查看>>
【d3js】结合pack和chord图进行多维数据展示
查看>>
最详细的activity的启动模式
查看>>
struts2 的 属性设置说明
查看>>
C++ 代码 获取当前目录
查看>>
关于文件的UTF-8的BOM标记问题记录
查看>>
flex 去掉combobox中的竖直分割线
查看>>
初心大陆-----python宝典 第一章
查看>>