重写BaseAdapter的样例

(1)用于ListView,用来设置每项的背景

 
  
1 package com.studio.basf.libs;
2
3 import java.util.List;
4
5 import android.content.Context;
6 import android.view.LayoutInflater;
7 import android.view.View;
8 import android.view.ViewGroup;
9 import android.widget.BaseAdapter;
10 import android.widget.RelativeLayout;
11 import android.widget.TextView;
12
13 import com.studio.basf.android.R;
14
15 /**
16 * 自定义ListView适配器-Square
17 * @author lhb-JewLeo
18 */
19 public class SquareAdapter extends BaseAdapter {
20
21 private LayoutInflater mInflater;
22 private List < String > list;
23
24 // 自定义容器类
25 class ViewHolder {
26 private TextView TvName;
27 private RelativeLayout ReLayout;
28
29 public TextView getTvName() {
30 return TvName;
31 }
32 public void setTvName(TextView tvName) {
33 TvName = tvName;
34 }
35 public RelativeLayout getReLayout() {
36 return ReLayout;
37 }
38 public void setReLayout(RelativeLayout reLayout) {
39 ReLayout = reLayout;
40 }
41 }
42
43 public SquareAdapter(List < String > list, Context context) {
44 this .list = list;
45 this .mInflater = LayoutInflater.from(context);
46 }
47
48 public int getCount() {
49 // TODO Auto-generated method stub
50 return list.size();
51 }
52
53 public Object getItem( int position) {
54 // TODO Auto-generated method stub
55 return list.get(position);
56 }
57
58 public long getItemId( int position) {
59 // TODO Auto-generated method stub
60 return position;
61 }
62
63 public View getView( int position, View convertView, ViewGroup parent) {
64 // TODO Auto-generated method stub
65 ViewHolder holder = null ;
66 if (convertView == null ) {
67 holder = new ViewHolder();
68
69 convertView = mInflater
70 .inflate(R.layout.square_item_view, null );
71 holder.setTvName((TextView) convertView
72 .findViewById(R.id.tvItemName));
73 holder.setReLayout((RelativeLayout) convertView
74 .findViewById(R.id.relativeSquare));
75
76 convertView.setTag(holder);
77 } else {
78 holder = (ViewHolder) convertView.getTag();
79 }
80
81 holder.getTvName().setText(list.get(position));
82 if (position == 0 ) {
83 holder.getReLayout().setBackgroundResource(R.drawable.circle_list_top);
84 } else if (position == getCount() - 1 ) {
85 holder.getReLayout().setBackgroundResource(R.drawable.circle_list_bottom);
86 } else {
87 holder.getReLayout().setBackgroundResource(R.drawable.circle_list_middle);
88 }
89
90 return convertView;
91 }
92
93 }

(2)动态改变ListView项中某个显示字段的内容



 
  
1 package com.studio.basf.libs;
2
3 import java.util.ArrayList;
4 import java.util.HashMap;
5
6 import android.content.Context;
7 import android.view.LayoutInflater;
8 import android.view.View;
9 import android.view.ViewGroup;
10 import android.widget.BaseAdapter;
11 import android.widget.TextView;
12
13 public class CustomListAdapter extends BaseAdapter {
14
15 private LayoutInflater mInflater;
16 private ArrayList < HashMap < String, String >> list;
17 private int resource;
18 private String[] from;
19 private int [] to;
20
21 // 自定义容器类
22 class ViewHolder {
23 private ArrayList < TextView > tvCollections;
24
25 public ArrayList < TextView > getTvCollections() {
26 return tvCollections;
27 }
28
29 public void setTvCollections(ArrayList < TextView > tvCollections) {
30 this .tvCollections = tvCollections;
31 }
32 }
33
34 public CustomListAdapter(Context context,
35 ArrayList < HashMap < String, String >> list, int resource,
36 String[] from, int [] to) {
37 this .list = list;
38 this .mInflater = LayoutInflater.from(context);
39 this .resource = resource;
40 this .from = from;
41 this .to = to;
42 }
43
44 public int getCount() {
45 // TODO Auto-generated method stub
46 return list.size();
47 }
48
49 public Object getItem( int position) {
50 // TODO Auto-generated method stub
51 return list.get(position);
52 }
53
54 public long getItemId( int position) {
55 // TODO Auto-generated method stub
56 return position;
57 }
58
59 public View getView( int position, View convertView, ViewGroup parent) {
60 // TODO Auto-generated method stub
61 ViewHolder holder = null ;
62 if (convertView == null ) {
63 holder = new ViewHolder();
64 convertView = mInflater.inflate(resource, null );
65
66 ArrayList < TextView > tvList = new ArrayList < TextView > ();
67 for ( int i = 0 ; i < to.length; i ++ ) {
68 tvList.add((TextView) convertView.findViewById(to[i]));
69 }
70 holder.setTvCollections(tvList);
71
72 convertView.setTag(holder);
73 } else {
74 holder = (ViewHolder) convertView.getTag();
75 }
76
77 // 获取单项数据
78 HashMap < String, String > hashMap = list.get(position);
79
80 if (hashMap.get( " isValid " ).trim().equals( " 失败 " )) {
81 hashMap.remove( " showvalidpoint " );
82 }
83
84 // 绑定到视图上
85 for ( int i = 0 ; i < to.length; i ++ ) {
86 holder.getTvCollections().get(i).setText(hashMap.get(from[i]));
87 }
88
89 return convertView;
90 }
91 }

转载于:https://www.cnblogs.com/jewleo/archive/2011/06/01/20110601_1.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值