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; } |