每次在adapter中,我们都需要findViewById,将这些属性封装起来,抽一个类
public class ViewHolder {
@SuppressWarnings("unchecked")
public static T get(View view, int id) {
SparseArray viewHolder = (SparseArray) view.getTag();
if (viewHolder == null) {
viewHolder = new SparseArray();
view.setTag(viewHolder);
}
View childView = viewHolder.get(id);
if (childView == null) {
childView = view.findViewById(id);
viewHolder.put(id, childView);
}
return (T) childView;
}
}
调取方式,
例如在adapter的getView()方法中
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = LayoutInflater.from(context).inflate(R.layout.fragment_compete_item1, null);
}
TextView title = ViewHolder.get(convertView, R.id.needs_title);
title.setText(String.valueOf(orders.get(position).getOrder_title()));
return convertView;
}
封装的ViewHolder
最新推荐文章于 2024-04-06 11:20:55 发布