android view中如何加linstener,

在开发中为控件添加Listener是非常常见的工作,最简单的添加Listener方式可以这样:

Java代码
1.findViewById(R.id.myButton).setOnClickListener(new View.OnClickListener() {  
2.    public void onClick(View v) {  
3.        // Do stuff  
4.    }  
5.}); 
findViewById(R.id.myButton).setOnClickListener(new View.OnClickListener() {      public void onClick(View v) {          // Do stuff      }  }); 采用上述方法添加Listener有个缺点就是如果控件太多的话,Listener数量也会增多,因此,可以采用如下的小窍门减少Listener的数量:

Java代码
1.View.OnClickListener handler = View.OnClickListener() {  
2.    public void onClick(View v) {  
3.        switch (v.getId()) {  
4.            case R.id.Button01: // doStuff  
5.                break;  
6.            case R.id.Button02: // doStuff  
7.                break;  
8.        }  
9.    }  
10.}  
11. 
12.findViewById(R.id.myButton).setOnClickListener(handler);  
13.findViewById(R.id.myOtherButton).setOnClickListener(handler); 
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代码
1.<?xml version="1.0" encoding="utf-8"?> 
2.<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
3.    android:orientation="vertical" 
4.    android:layout_width="fill_parent" 
5.    android:layout_height="fill_parent" 
6.    > 
7.<TextView    
8.    android:layout_width="fill_parent"   
9.    android:layout_height="wrap_content"   
10.    android:text="@string/hello" 
11.    /> 
12.<Button   
13.    android:text="Button01"   
14.    android:id="@+id/Button01"   
15.    android:layout_width="wrap_content"   
16.    android:layout_height="wrap_content" 
17.    android:onClick="myClickHandler01" 
18.    /> 
19.<Button   
20.    android:text="Button02"   
21.    android:id="@+id/Button02"   
22.    android:layout_width="wrap_content"   
23.    android:layout_height="wrap_content" 
24.    android:onClick="myClickHandler02" 
25.    /> 
26.<TextView    
27.    android:layout_width="fill_parent"   
28.    android:layout_height="wrap_content"   
29.    android:text="@string/hello" 
30.    /> 
31.</LinearLayout> 
<?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的形参)。

Java代码
1.package com.ray.test;  
2. 
3.import android.app.Activity;  
4.import android.os.Bundle;  
5.import android.view.View;  
6. 
7.public class TestOnClickListener extends Activity {  
8.     
9.    @Override 
10.    public void onCreate(Bundle savedInstanceState) {  
11.        super.onCreate(savedInstanceState);  
12.        setContentView(R.layout.main);  
13.          
14. 
15.    }  
16.    public void myClickHandler01(View target){  
17.        setTitle("myClickHandler01");  
18.    }  
19.    public void myClickHandler02(View target){  
20.        setTitle("myClickHandler02");  
21.    }  
22.} 
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"

Java代码
1.package com.ray.test;  
2. 
3.import android.app.Activity;  
4.import android.os.Bundle;  
5.import android.view.View;  
6. 
7.public class TestOnClickListener extends Activity {  
8.     
9.    @Override 
10.    public void onCreate(Bundle savedInstanceState) {  
11.        super.onCreate(savedInstanceState);  
12.        setContentView(R.layout.main);  
13.    }  
14.    public void myClickHandler(View target){  
15.         switch (target.getId()) {  
16.         case R.id.Button01:   
17.             setTitle("myClickHandler01");  
18.             break;  
19.         case R.id.Button02:   
20.             setTitle("myClickHandler02");  
21.             break;  
22.         }  
23.    }  
24.} 

猜你喜欢

转载自642315609.iteye.com/blog/1685710