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
|
@Overridepublic
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;} |
本文介绍如何使用AbViewHolder来简化适配器代码,减少holder类的定义,并通过实例展示其在ImageListAdapter和ImageGridAdapter中的应用。
745

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



