|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
|
public
class ViewHolder { // I added a generic return type to reduce the casting noise in client code @SuppressWarnings("unchecked") publicstatic
<T extendsView> T get(View view,
intid) {
SparseArray<View> viewHolder = (SparseArray<View>) view.getTag(); if(viewHolder ==
null) { viewHolder =new
SparseArray<View>(); view.setTag(viewHolder); } View childView = viewHolder.get(id); if(childView ==
null) { childView = view.findViewById(id); viewHolder.put(id, childView); } return(T) childView;
}} |
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
|
@Overridepublic
View getView(int
position, View convertView, ViewGroup parent) { if(convertView ==
null) { convertView = LayoutInflater.from(context)
.inflate(R.layout.banana_phone, parent, false); } ImageView bananaView = ViewHolder.get(convertView, R.id.banana); TextView phoneView = ViewHolder.get(convertView, R.id.phone); BananaPhone bananaPhone = getItem(position); phoneView.setText(bananaPhone.getPhone()); bananaView.setImageResource(bananaPhone.getBanana()); returnconvertView;
} |
本文介绍了一种优化ViewHolder模式的方法,通过泛型返回类型减少客户端代码的强制类型转换噪音,并展示了如何在ListView适配器中实现该模式,提高视图组件的复用效率。
2826

被折叠的 条评论
为什么被折叠?



