AbViewHolder源码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
public
class
AbViewHolder {
/**
* ImageView view = AbViewHolder.get(convertView, R.id.imageView);
* @param view
* @param id
* @return
*/
@SuppressWarnings
(
"unchecked"
)
public
static
<T
extends
View> T get(View view,
int
id) {
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;
}
}
|
在适配器中的应用,可以减少holder类的繁琐的定义,可以参照demo中的ImageListAdapter,
同时ImageGridAdapter的写法是原始的,可以比较使用:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
@Override
public
View getView(
int
position, View convertView, ViewGroup parent){
if
(convertView ==
null
){
//使用自定义的list_items作为Layout
convertView = mInflater.inflate(mResource, parent,
false
);
}
ImageView itemsIcon = AbViewHolder.get(convertView, mTo[
0
]);
TextView itemsTitle = AbViewHolder.get(convertView, mTo[
1
]);
TextView itemsText = AbViewHolder.get(convertView, mTo[
2
]);
//获取该行的数据
final
Map<String, Object> obj = (Map<String, Object>)mData.get(position);
String imageUrl = (String)obj.get(
"itemsIcon"
);
itemsTitle.setText((String)obj.get(
"itemsTitle"
));
itemsText.setText((String)obj.get(
"itemsText"
));
//设置加载中的View
mAbImageDownloader.setLoadingView(convertView.findViewById(R.id.progressBar));
//图片的下载
mAbImageDownloader.display(itemsIcon,imageUrl);
return
convertView;
}
|