欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android View添加 Listener 实例代码

程序员文章站 2023-12-06 10:25: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;   
         }   
    }   
}