package com.hansion.hble.sample.adapter; import android.content.Context; import android.util.SparseArray; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; /** * 通用ViewHolder,避免每个Adapter都需要写ViewHolder */ public class BaseViewHolder { private SparseArray<View> mView; private int mPosition; private View mConvertView; public BaseViewHolder(Context context, ViewGroup parent, int layoutId, int position) { mPosition = position; mView = new SparseArray<View>(); mConvertView = LayoutInflater.from(context).inflate(layoutId, parent, false); mConvertView.setTag(this); } public static BaseViewHolder getViewHolder(Context context, View convertView, ViewGroup parent, int layoutId, int position) { if (convertView == null) { return new BaseViewHolder(context, parent, layoutId, position); } else { BaseViewHolder viewHolder = (BaseViewHolder) convertView.getTag(); viewHolder.mPosition = position; return viewHolder; } } public View getConvertView() { return mConvertView; } /** 通过id获取控件 */ public <T extends View> T getView(int viewId) { View view = mView.get(viewId); if (view == null) { view = mConvertView.findViewById(viewId); mView.put(viewId, view); } return (T) view; } }