重写BaseAdapter的样例

来源:互联网 发布:电子书阅读软件哪个好 编辑:程序博客网 时间:2024/05/20 12:47

(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 classSquareAdapter extends BaseAdapter {
20
21     private LayoutInflatermInflater;
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     publicSquareAdapter(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, ViewconvertView, 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 classCustomListAdapter extends BaseAdapter {
14
15     private LayoutInflatermInflater;
16     privateArrayList<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     publicCustomListAdapter(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, ViewconvertView, 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 = newArrayList<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 }