Android View添加 Listener 实例代码
程序员文章站
2023-11-20 17:40:22
复制代码 代码如下:findviewbyid(r.id.mybutton).setonclicklistener(new view.onclicklistener() {&...
复制代码 代码如下:
findviewbyid(r.id.mybutton).setonclicklistener(new view.onclicklistener() {
public void onclick(view v) {
// do stuff
}
});
采用上述方法添加listener有个缺点就是如果控件太多的话,listener数量也会增多,因此,可以采用如下的小窍门减少listener的数量:
复制代码 代码如下:
view.onclicklistener handler = view.onclicklistener() {
public void onclick(view v) {
switch (v.getid()) {
case r.id.button01: // dostuff
break;
case r.id.button02: // dostuff
break;
}
}
}
findviewbyid(r.id.mybutton).setonclicklistener(handler);
findviewbyid(r.id.myotherbutton).setonclicklistener(handler);
在android1.6里面,添加listener的工作变得相当的简单(感觉更像在做网页编程!),具体步骤如下:
1.首先在layout里面定义button并指定响应的listener
复制代码 代码如下:
<xml version="1.0" encoding="utf-8"?>
<linearlayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<textview
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
/>
<button
android:text="button01"
android:id="@+id/button01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onclick="myclickhandler01"
/>
<button
android:text="button02"
android:id="@+id/button02"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onclick="myclickhandler02"
/>
<textview
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
/>
</linearlayout>
其中以下这两行就是新增的特性:
android:onclick="myclickhandler01"
android:onclick="myclickhandler02"
2.在活动里面定义public的方法myclickhandler01、和myclickhandler02(注意这两个方法必须有一个view的形参)。
复制代码 代码如下:
package com.ray.test;
import android.app.activity;
import android.os.bundle;
import android.view.view;
public class testonclicklistener extends activity {
@override
public void oncreate(bundle savedinstancestate) {
super.oncreate(savedinstancestate);
setcontentview(r.layout.main);
}
public void myclickhandler01(view target){
settitle("myclickhandler01");
}
public void myclickhandler02(view target){
settitle("myclickhandler02");
}
}
当然,你也可以采用这种写法:
将两个按钮设置到同一个listener
android:onclick="myclickhandler"
android:onclick="myclickhandler"
复制代码 代码如下:
package com.ray.test;
import android.app.activity;
import android.os.bundle;
import android.view.view;
public class testonclicklistener extends activity {
@override
public void oncreate(bundle savedinstancestate) {
super.oncreate(savedinstancestate);
setcontentview(r.layout.main);
}
public void myclickhandler(view target){
switch (target.getid()) {
case r.id.button01:
settitle("myclickhandler01");
break;
case r.id.button02:
settitle("myclickhandler02");
break;
}
}
}