public class Util_holder {
public static<T extends View> T get(View view,int id){
SparseArray<View> holder = (SparseArray<View>) view.getTag();
if(holder == null){
holder = new SparseArray<View>();
view.setTag(holder);
}
View childView = holder.get(id);
if(childView == null){
childView = view.findViewById(id);
holder.put(id, childView);
}
return <T>childView;
}
}
上面是util,下面是adapter的getview
if(convertView == null){
convertView = View.inflate(context, R.layout.item, null);
}
TextView textView = (TextView) Util_holder.get(convertView, R.id.textView1);
textView.setText(list.get(position).get("r").toString());
return convertView;
问题来了:::为什么返回值是View的子类呢?View也行啊
------解决思路----------------------
这过程是想得到view里面的一个子类,比如一个linearlayout中的textview当然return的值是子类。你看这句话TextView textView = (TextView) Util_holder.get(convertView, R.id.textView1);是具体得到子类而不是整的view。。。
------解决思路----------------------
这个例子中应该是传的参数id已经确定了是textview类型
TextView textView = (TextView) Util_holder.get(convertView, R.id.textView1);
工具类里View childView = holder.get(id);得到的childView已经确定了是View父类引用指向子类TextView的对象
不过这个工具类应该也能适应自定义view
到时候返回的就是view对象了