您的位置:首页 > 移动开发 > Android开发

Android 四种常用的监听器

2016-05-18 22:47 375 查看
Android 四种常用的监听器

      什么是监听器?

    1、监听器是个抽象类,它包含了一个事件触发时系统会去调用的函数

  2、在子类中,根据您项目的需要重写这个函数

  3、派生后的监听器需要绑定到按钮上,就像一个耳机可以发出声音,但您不去戴它,您是听不到它发出的声音的。一般的情况是这个按钮可能需要这个监听器,而另外一个按钮需要另外一个监听器,每个监听器各司其职,但功能相似时,也可以多个按钮共同绑定一个监听器。

第一种监听器:匿名内部类 
实现方法: listener.setOnClickListener(new OnClickListener() {

public void onClick(View arg0) {

}

});

.xml

 <Button

        android:id="@+id/listener"

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:text="listener" />

.java
public class MainActivity extends ActionBarActivity {
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
       Button listener = (Button) findViewById(R.id.listener);
       listener.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, "我是匿名内部类", 0).show();
}
});
}
第二种监听器 xml监听器   (这种想控制Button的属性 例如setEnabled  还有双击的时候   不推荐使用这种   )

在.xml中加个onClick语句

.xml
<Button
        android:id="@+id/listener"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:onClick="click"
        android:text="listener" />
.java
public class Xml_listener_Activity extends ActionBarActivity {
 
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_xml_listener);
}
 
public void click(View view){
Toast.makeText(this, "我是xml监听器", 0).show();

}
}
第三种监听器   activity本身作为监听器
这个把你的类实现了OnClickListener接口

.xml

  <Button

        android:id="@+id/listener"

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:text="listener" />

.java

public class ActivityListenerActivity extends ActionBarActivity implements OnClickListener{

 

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_activity_listener);

TextView listener = (TextView) findViewById(R.id.listener);

listener.setOnClickListener(this);

}

 

@Override

public void onClick(View arg0) {

Toast.makeText(this, "我是activity本身作为监听器", 0).show();

}

}

第四种监听器    内部类作为监听器

.xml

  <Button

        android:id="@+id/listener"

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:text="listener" />

.java

public class InsideListenerActivity extends ActionBarActivity {

 

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_inside_listener);

TextView list = (TextView) findViewById(R.id.listener);

mylistener listener=new mylistener();

list.setOnClickListener(listener);

}

class mylistener implements OnClickListener{

 

@Override

public void onClick(View arg0) {

Toast.makeText(InsideListenerActivity.this, "我是内部类作为监听器", 0).show();

}

}

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  监听器