android listview适配器里区分不同按钮的点击事件

来源:互联网 发布:图书馆网络需求分析 编辑:程序博客网 时间:2024/05/17 10:05
1
一、适配器 ListItemClickAdapter
?
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
publicclass ListItemClickAdapter extendsBaseAdapter {
    privateContext contxet;
    privateArrayList<string> list;
    privateListItemClickHelp callback;
    privateLayoutInflater mInflater;
 
    publicListItemClickAdapter(Context contxet, ArrayList<string> list,
            ListItemClickHelp callback) {
        this.contxet = contxet;
        this.list = list;
        this.callback = callback;
    }
 
    @Override
    publicint getCount() {
        returnlist.size();
    }
 
    @Override
    publicObject getItem(intposition) {
        returnnull;
    }
 
    @Override
    publiclong getItemId(intposition) {
        return0;
    }
 
    @Override
    publicView getView(intposition, View convertView, finalViewGroup parent) {
        mInflater = (LayoutInflater) contxet
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        ViewHolder holder;
        if(convertView == null) {
            convertView = mInflater.inflate(
                    R.layout.block_list_item,null);
            holder = newViewHolder();
            holder.mAd_tv_show = (TextView) convertView
                    .findViewById(R.id.ad_tv_show);
            holder.mAd_btn_one = (Button) convertView
                    .findViewById(R.id.ad_btn_one);
            holder.mAd_btn_two = (Button) convertView
                    .findViewById(R.id.ad_btn_two);
            convertView.setTag(holder);
        }else{
            holder = (ViewHolder) convertView.getTag();
        }
 
        holder.mAd_tv_show.setText(list.get(position));
 
        finalView view = convertView;
        finalint p = position;
        finalint one = holder.mAd_btn_one.getId();
        holder.mAd_btn_one.setOnClickListener(newOnClickListener() {
            @Override
            publicvoid onClick(View v) {
                callback.onClick(view, parent, p, one);
            }
        });
 
        finalint two = holder.mAd_btn_two.getId();
        holder.mAd_btn_two.setOnClickListener(newOnClickListener() {
            @Override
            publicvoid onClick(View v) {
                callback.onClick(view, parent, p, two);
            }
        });
 
        returnconvertView;
    }
 
    publicstatic class ViewHolder {
        TextView mAd_tv_show;
        Button mAd_btn_one;
        Button mAd_btn_two;
    }
}
</string></string>

二、接口 ListItemClickHelp

?
1
2
3
4
5
6
7
8
/**
 * listview点击事件接口
 * @author Alan
 *
 */
publicinterface ListItemClickHelp {
    voidonClick(View item, View widget, intposition, intwhich);
}

三、界面 MainActivity

?
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
publicclass MainActivity extendsActivity implementsListItemClickHelp {
 
    privateTextView mtv_show;
    privateListView mlv_show;
    privateArrayList<string> mdata = newArrayList<string>();
    privateListItemClickAdapter madapter;
 
    @Override
    protectedvoid onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        initLayout();
    }
 
    privatevoid initLayout() {
        mdata.add("One");
        mdata.add("Two");
        mdata.add("Three");
        mdata.add("Four");
        mdata.add("Five");
        mdata.add("菠萝");
        mdata.add("苹果");
        mdata.add("葡萄");
        mdata.add("哈密瓜");
        mdata.add("香蕉");
 
        mtv_show = (TextView) this.findViewById(R.id.tv_show);
        mlv_show = (ListView) this.findViewById(R.id.lv_show);
 
        madapter = newListItemClickAdapter(this, mdata, this);
        mlv_show.setAdapter(madapter);
 
        mlv_show.setOnItemClickListener(newOnItemClickListener() {
            @Override
            publicvoid onItemClick(AdapterView<!--?--> adapter, View view,
                    intposition, longarg3) {
                mtv_show.setText(mdata.get(position));
            }
        });
    }
 
    @Override
    publicvoid onClick(View item, View widget, intposition, intwhich) {
        switch(which) {
        caseR.id.ad_btn_one:
            mtv_show.setText(mdata.get(position) + "Btn one");
            break;
        caseR.id.ad_btn_two:
            mtv_show.setText(mdata.get(position) + "Btn two");
            break;
        default:
            break;
        }
    }
 
}
</string></string>

四、效果图

<img src="http://www.2cto.com/uploadfile/Collfiles/20140319/2014031909142995.jpg" alt="n块エky" http:="" www.2cto.com="" soft"="" target="_blank" class="keylink" style="border-width: 0px; padding: 0px; margin: 0px; list-style: none; height: 560px; width: 315px;">下载地址:http://download.csdn.net/detail/shi508181017/7060961

0 0
原创粉丝点击