BaseAdapter的简单封装
来源:互联网 发布:淘宝店铺装修平台 编辑:程序博客网 时间:2024/06/10 07:13
继承BaseAdapter的抽象类(根据需求进行添加方法)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
public
abstract
class
MyBaseAdapter<T>
extends
BaseAdapter{
public
List<T> list;
public
Context context;
public
MyBaseAdapter(Context context,List<T> list) {
this
.list = list;
this
.context = context;
}
@Override
public
int
getCount() {
return
list !=
null
? list.size() :
0
;
}
@Override
public
Object getItem(
int
position) {
return
list.get(position);
}
@Override
public
long
getItemId(
int
position) {
return
position;
}
/**
*入口,第一步
*/
@Override
public
View getView(
int
position, View convertView, ViewGroup parent) {
//实现抽象方法创建ViewHolder,并返回ViewHolder执行getItemView方法返回的视图
return
createViewHoler(position, convertView, parent).getItemView();
}
/**
* 创建ViewHolder的抽象方法
* @param position
* @param convertView
* @param parent
* @return
*/
public
abstract
ViewHolder createViewHoler(
int
position, View convertView, ViewGroup parent);
/**
* ViewHolder类
*/
public
static
class
ViewHolder {
private
View convertView;
//保存View的map
private
HashMap<Integer, View> views;
private
Context context;
/**
*第四步:ViewHolder的私有构造器
*/
private
ViewHolder(Context context, View convertView) {
this
.convertView = convertView;
this
.views =
new
HashMap<>();
this
.context = context;
//设置tag
convertView.setTag(
this
);
}
/**
*第三步:提供给外界获取ViewHolder的方法(使用优化重用布局)
*/
public
static
ViewHolder getHolder(View convertView, Context context,
int
layoutId, ViewGroup parent) {
if
(convertView ==
null
) {
LayoutInflater inflater = LayoutInflater.from(context);
convertView = inflater.inflate(layoutId, parent,
false
);
return
new
ViewHolder(context, convertView);
}
else
{
return
(ViewHolder) convertView.getTag();
}
}
/**
* findById方法
* @param id
* @param <T>
* @return
*/
public
<T
extends
View> T findById(
int
id) {
View view = views.get(id);
if
(view ==
null
) {
view = convertView.findViewById(id);
views.put(id, view);
}
else
{
view = views.get(id);
}
return
(T) view;
}
/**
* 设置TextView文本方法
* @param id
* @param txt
*/
public
void
setText(
int
id, String txt) {
TextView tv = findById(id);
tv.setText(txt);
}
/**
* 返回整个视图
* @return
*/
public
View getItemView() {
return
convertView;
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
public
class
TestAdapter
extends
MyBaseAdapter{
private
List<String> list;
protected
Context context;
public
TestAdapter(Context context, List<String> list) {
super
(context, list);
this
.list = list;
this
.context = context;
}
/**
* 第二步
* @param position
* @param convertView
* @param parent
* @return
*/
@Override
public
ViewHolder createViewHoler(
int
position, View convertView, ViewGroup parent) {
ViewHolder holder = ViewHolder.getHolder(convertView,context, R.layout.simple_fragment,parent);
//findById方法
TextView tv = holder.findById(R.id.tv_sp_fm);
//设置TextView文本方法
holder.setText(R.id.tv_sp_fm,list.get(position));
return
holder;
}
}
0 0
- BaseAdapter的简单封装
- BaseAdapter的简单封装
- BaseAdapter的最简单的封装
- BaseAdapter简单封装
- BaseAdapter简单封装
- BaseAdapter简单封装
- BaseAdapter的封装
- baseadapter的二次封装
- BaseAdapter的封装
- Listview,Gridview等BaseAdapter简单的封装操作
- recyclerView的 BaseAdapter的封装
- Butterknife下的BaseAdapter封装。
- BaseAdapter的再次封装使用
- BaseAdapter的封装和实现
- 对BaseAdapter和ViewHolder的封装
- Android BaseAdapter的极简封装
- 多布局BaseAdapter的封装TeachMultiTypeAdapter
- BaseAdapter的封装来实现模块化开发
- MySQL数据类型
- 做销售,必须“封杀”的七种心理
- R 数字 字符 向量
- history.back()与history.go(-1)
- 百分比布局 (翻译,体验)解决布局问题,又一种体验
- BaseAdapter的简单封装
- n
- Gradle sync failed: Gradle DSL method not found: 'android()'
- 汉邦高科监控视频删除后恢复
- 安卓开发——问题:设置Imageview的maxHeight、minHeight时无效
- Xcode7.1网络请求出错
- 无共享架构
- HNOI016 大数 莫队
- intel dpdk 在虚拟机 VMware 中安装部署