android适配器封装,Android万能适配器(一)封装ViewHolder
封装 ViewHolder
简单分析ViewHolder封装。ViewHolder内部正常是保存每个页面控件的索引,那么封装时候我们可以使用容器把每个Item布局中的所有控件存储到这个容器里面,每次使用时候从容易查询.这里用Map可以实现。也可以使用SparseArray替换,SparseArray比Map效率更高。
/**
* 封装ViewHolder工具类
* @author IsCoding
*/
public class ViewHolder {
private final HashMap mViews;
private View mConvertView;
public ViewHolder(Context context, ViewGroup parent, int layoutId,
int position) {
this.mViews = new HashMap();
mViews.clear();
mConvertView = LayoutInflater.from(context).inflate(layoutId, parent,
false);
mConvertView.setTag(this);
}
public static ViewHolder get(Context context, View convertView,
ViewGroup parent, int layoutId, int position) {
if (convertView == null) {
return new ViewHolder(context, parent, layoutId, position);
}
return (ViewHolder) convertView.getTag();
}
public T getView(int viewId) {
View view = mViews.get(viewId);
if (view == null) {
view = mConvertView.findViewById(viewId);
下面看一下使用封装后的ViewHolder的效果
package com.iscoding.mobile.adaptertest.test2.adapter;
import java.util.List;
import com.iscoding.mobile.adaptertest.R;
import com.iscoding.mobile.adaptertest.test2.ViewHolder;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
public class MyAdapter2 extends BaseAdapter {
private LayoutInflater mInflater;
private Context mContext;
private List mDatas;
public MyAdapter2(Context context, List mDatas) {
mInflater = LayoutInflater.from(context);
this.mContext = context;
this.mDatas = mDatas;
}
@Override
public int getCount() {
return mDatas.size();
}
@Override
public Object getItem(int position) {
return mDatas.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// 实例化一个viewHolder
ViewHolder viewHolder = ViewHolder.get(mContext, convertView, parent,
R.layout.item_1, position);
// 通过getView获取控件
TextView tv = viewHolder.getView(R.id.text_title);
// 使用
tv.setText(mDatas.get(position));
return viewHolder.getConvertView();
}
} 使用封装好的
ViewHolder 已经使代码看起来简洁非常多了。
android适配器封装,Android万能适配器(一)封装ViewHolder相关推荐
- BaseAdapter封装 实现万能适配器
1.封装ViewHodler 1 package com.example.utils; 2 3 import android.content.Context; 4 import android.gra ...
- Android开发之万能适配器
ListView.GridView等等非常多的东西都需要适配器.而如果开发一个app每一个listview都有写一个Adapter的话,那还怎么愉快的玩游戏.. 什么是ViewHolider以及的用法 ...
- Java泛型应用之打造Android中ListView和GridView万能适配器【CommonAdapter】--超简洁写法
转载请注明出处:http://blog.csdn.net/linglongxin24/article/details/52813227 [DylanAndroid的csdn博客] 在android中使 ...
- Android万能适配器BaseRecyclerViewAdapterHelper的简单使用
继我们上一章的网络请求的封装中,我们在现有的项目中通过我们的万能适配器来写一个简单的Recyclerview列表 效果图 video1 首先还是同样的道理,我们需要进行一个简单的依赖添加 //recy ...
- android通用listview和gridview万能适配器实现的两种方式
Listview和gridview是超级常用组件,于是乎,应该封装一下直接拿来用用而不是每次都写Adapter,这样多么的麻烦是不.虽然国内外大牛都有封装过,但是我总结了两个封装好的Adapter分享 ...
- Android进阶笔记09:Android 万能适配器
1. Android 万能适配器 项目中Listview GridView几乎是必用的组件,Android也提供一套机制,为这些控件绑定数据,那就是Adapter.用起来虽然还不错,但每次都 ...
- Android BaseQuickAdapter万能适配器
RecycleView万能适配器 一导入 implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.24' implem ...
- Android 万能适配器BaseQuickAdapter操作及免费源码
Android 万能适配器BaseQuickAdapter操作及免费源码,本篇巨长无比,非常详细的介绍了BaseQuickAdapter,若有帮助到您,记得点个赞哦~ 简介 导入依赖 简单使用 添加头 ...
- Android之万能适配器Adapter的使用
万能适配器 万能适配器共有两个部分:SuperViewHolder 和 SuperBaseAdapter 万能的ViewHolder public class SuperViewHolder {pri ...
- Android万能适配器BaseListAdapter
我们在写列表的时候都要用到适配器Adapter,如果每一个列表都去创建一个Adapter以及相应的ViewHolder,则重复代码太多,效率低下,为了改变这种情况,我们需要做到尽可能多的复用Adapt ...
最新文章
- 久未更 ~ 一之 —— 关于ToolBar
- 负载均衡的几种常用方案
- vue pc端 商品轮播图_轮播图高点击商品图
- 技巧:设置程序默认安装到D盘
- 【Qt开发】V4L2 API详解 Buffer的准备和数据读取
- 在Ubuntu Linux中获取上次访问的文件时间
- Java常见面试知识点:继承、接口、多态、代码块
- Gradle学习之使用java plugin
- Python模块_re正则表达式模块-2
- ORM框架之Mybatis(五)mybatis生成器配置文件说明以及生成的类的说明
- 前端简单h5播放器的制作
- 小程序开发中遇到的坑
- JS逆向---获取某知名外卖平台数据(_token)
- npp++常用的匹配正则表达式
- prometheus + cadvisor + grafana 监控容器和服务器
- 转专业申请加拿大计算机硕士,GPA低?教你如何成功申请加拿大硕士!
- android webview静态方法,在android webview中加载静态页面
- 【OGNL表达式struts2标签“%,#,$”】
- 八字易经算法之用JAVA实现生旺死绝和十神
- java8中的流(Stream)