`
wx1569488408
  • 浏览: 75232 次
文章分类
社区版块
存档分类
最新评论

安卓Adapter适配器Hodler封装

 
阅读更多

在写安卓的适配器中,使用内部类ViewHolder的形式进行优化时,每次都要写很多代码是很枯燥的一件事。下面的写法将大大减少代码的重复书写:

 


import android.content.Context;
import android.util.SparseArray;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

/**
 * 封装的ViewHolder工具类。用于Adapter的getView方法中
 */
public class AdapterHolder {

//	private final HashMap<Integer,View> mViews;
	private final SparseArray<View> holder;
	private View convertView;
	
	private AdapterHolder(Context context,View convertView, ViewGroup parent, int layoutId,int position) {
		convertView = LayoutInflater.from(context).inflate(layoutId, parent,false);
		holder = new SparseArray<View>();
		convertView.setTag(this);
		this.convertView = convertView;
	}
	public static AdapterHolder getHolder(Context context, View convertView,ViewGroup parent, int layoutId, int position) {
		if (convertView == null) {
			return new AdapterHolder(context, convertView, parent, layoutId, position);
		}
		return (AdapterHolder) convertView.getTag();
	}
	public View getConvertView(){
		return convertView;
	}

	@SuppressWarnings("unchecked")
	public <T> T getView(int id) {
		View childView = (View) holder.get(id);
		if (childView == null) {
			childView = convertView.findViewById(id);
			holder.put(id, childView);
		}
		return (T) childView;
	}
//	public static <T>T getView(View converrView,int id){
//		if (holder == null) {
//			holder = new SparseArray<View>();
//		}
//		View childView = (View) holder.get(id);
//		if (childView == null) {
//			childView = convertView.findViewById(id);
//			holder.put(id, childView);
//		}
//		return (T) childView;
//	}
}

 

使用方式:

@Override
	public View getView(int position, View convertView, ViewGroup parent) {
		
		AdapterHolder adapterHolder = AdapterHolder.getHolder(context, convertView, parent, R.layout.item_linearlayout_other_activity, position);
		ItemInfo itemInfo = itemInfos.get(position);
		
		TextView tv_mess = adapterHolder.getView(R.id.tv_text_linearLayout);
		ImageView iv_icon = adapterHolder.getView(R.id.iv_icon_linearLayout);
		
		tv_mess.setText(itemInfo.getStringId());
		iv_icon.setBackgroundResource(itemInfo.getImageId());
		
		return adapterHolder.getConvertView();
	}

 

转载于:https://my.oschina.net/mingyueyixi/blog/757097

分享到:
评论

相关推荐

    HODLER

    " hodler "是一个可能指的是加密货币领域中的术语,它源于拼写错误的“holder”,在社区中被广泛用于指代长期持有加密货币的人,特别是比特币。这个术语常常带有积极的含义,代表那些信仰加密货币长远价值,并选择...

    Graph Algorithms:Practical Examples in Apache Spark and Neo4j+高清无码书签完整内容可编辑完美资源

    Hodler Copyright © 2019 Amy Hodler and Mark Needham. All rights reserved. What’s in This Book This book is a practical guide to getting started with graph algorithms for developers and data ...

    hodlermanifesto:HODLer宣言

    宣言的所在地: 会费 欢迎做出贡献,但宣言本身目前基本上已经完成。 如果您可以提出一个非常有说服力的论点,并且愿意更新翻译,我可能会接受对文档的更改。 但是,我确实鼓励人们做出贡献: ...

    AndroidViewGenerator.zip

    在Android应用开发中,我们常常需要手动编写大量的XML布局文件,并且在对应的Activity、Fragment或Adapter中寻找对应的视图元素,如findViewById方法。这个过程繁琐且易出错,尤其是在项目规模较大时。为了解决这一...

    Graph Algorithms

    Discover how graph algorithms can help you leverage the relationships within your data to develop more intelligent solutions and enhance your machine learning models. You’ll learn how graph analytics...

    Android 同时setTag两次保存多种值的示例代码

    setTag是android的view类中很有用的一个方法,可以用它来给空间附加一些信息,在很多场合下都得到妙用。 示例代码: view.setTag(R.string.action_settings,hodler.content); 接收两个值,一个是key值,必须是唯一...

    人工智能与图数据库技术1

    The #1 Platform for Connected Data人工智能与图数据库技术通过领域知识和关联数据提高AI性能Amy E. Hodler, Mar

    Graph Algorithms: Practical Examples in Apache Spark and Neo4j

    Hodler ISBN-10 书号: 1492047686 ISBN-13 书号: 9781492047681 Edition 版本: 1 出版日期: 2019-01-04 pages 页数: (217) Discover how graph algorithms can help you leverage the relationships within your ...

    霍德农场

    每当有人购买$ HODL代币时: :dollar_banknote: 1%发送到每个hodler :fire: 1%被永远燃烧 :warning: 您必须设置高于2.1%的滑点才能购买$ HODL代币 总供应量:2'000'000 $ HODL初始流动资金:1'000'000 $ HODL...

    neo4j-graph-algorithms:Neo4j的高效图算法

    Neo4j的高效图算法 Graph Data Science(GDS)库已弃用该库,现在可在我们的或...艾米·霍德勒(Amy Hodler)和马克·尼德姆(Mark Needham)最近完成了O'Reilly图算法书的编写。 仅在限定时间内,您可以从下载免费副本

    checkonchain.com

    退缩-递减图表以下文档指定了输入计算,并提供了...(#-hodler-conversion-rate) [票务量加权平ASP格](#-票务量加权平ASP格-tvwap-(美元)) [最强手](#-最强手) 绩效和交易指标公制标签列表- USD- BTC- Pric

Global site tag (gtag.js) - Google Analytics