码迷,mamicode.com
首页 > 其他好文 > 详细

ExpandListView 多个ItemView的效率优化

时间:2014-11-08 18:20:44      阅读:211      评论:0      收藏:0      [点我收藏+]

标签:android   expandlistview   优化   

最近在项目遇到一个问题,就是在ExpandListView中有多个ItemView和groupView  每次都需要初始化,这个效率只能呵呵了!思路是如此出发的!

以前我们使用在一个Listview只有单个itemView优化如下!

	FitListViewHolder viewHolder;
		if (convertView == null) {
			convertView = LayoutInflater.from(context).inflate(
					R.layout.fitlistitem, null);
			viewHolder = new FitListViewHolder(convertView, context);
			convertView.setTag(viewHolder);
		} else {
			viewHolder = (FitListViewHolder) convertView.getTag();
		}

		// 装载数据
		viewHolder.setContent(yiLists.get(position));

大部分人应该都是这么处理的,我也是这样处理的!

一次类推如果为多个责直接扩展为:

 if (symptomResultType == SymptomResultType.SYMPTOM_TYPE_COMMON_METHOD) {
            CommonMethodViewHolder viewHolder;
            if(convertView == null || !(convertView.getTag() instanceof CommonMethodViewHolder)) {
                convertView = LayoutInflater.from(mContext).inflate(R.layout.list_item_common_method, null);
                viewHolder = new CommonMethodViewHolder(convertView, mContext);
                convertView.setTag(viewHolder);
            }else{
                viewHolder = (CommonMethodViewHolder) convertView.getTag();
            }
            Object[] userMethods = userSymptomResultModel.userMethodDatas.toArray();
            viewHolder.setMethodContent((UserMethod) userMethods[childPosition]);
            return convertView;
        } else if (symptomResultType == SymptomResultType.SYMPTOM_TYPE_HABIT) {
            UserHabitViewHolder viewHolder;
            if(convertView == null || !(convertView.getTag() instanceof UserHabitViewHolder)) {
                convertView = LayoutInflater.from(mContext).inflate(R.layout.list_item_habit, null);
                viewHolder = new UserHabitViewHolder(convertView, mContext);
                convertView.setTag(viewHolder);
            }else{
                viewHolder = (UserHabitViewHolder) convertView.getTag();
            }
            Object[] userHabits = userSymptomResultModel.userHabitDatas.toArray();
            viewHolder.setHabitContent((UserHabit) userHabits[childPosition]);
            return convertView;
        }

中心思想就是根据contentView是否为空或者不为空的情况下获取gettag然后看看是否是当前item需要的View,如果不是责再去创建。根据tag去获取就OK了!

debug执行了我想要的结果!


欢迎大家拍砖!



ExpandListView 多个ItemView的效率优化

标签:android   expandlistview   优化   

原文地址:http://blog.csdn.net/zhangxiweicaochen/article/details/40922133

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!