Android学习——四种绑定监听事件

时间:2022-07-25 22:35:29

 欢迎任何形式的转载,但请务必注明出处。

此篇参考:http://blog.csdn.net/a78270528/article/details/46953541

 

XML文件

重点是为两个控件设置id,在java代码中我们可以通过查找id找到对应控件为其设置监听事件

<TextView
        android:id="@+id/textView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:text="Hello Liu!"
        android:textSize="40dp"
        android:textStyle="bold"
        android:layout_marginTop="20dp"
         />

<Button
        android:text="Button"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/textView"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:id="@+id/bt_dial" />

 

一:匿名内部类

该方法比较直观方便编写,但当按钮增加时代码会变得庞大。

public class MainActivity extends AppCompatActivity {
    //通过id查找控件
    private Button bt_dial = (Button)findViewById(R.id.bt_dial);
    private TextView textview = (TextView)findViewById(R.id.textView);

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);  //加载布局

        bt_dial.setOnClickListener(new View.OnClickListener(){ //设置监听事件
            @Override
            public void onClick(View view){
                textview.setText("Hello World");  //点击按钮将textview2中的文本改变
            }
        });
    }
}

 

二、自定义单击事件监听类

public class MainActivity extends AppCompatActivity {
    //通过id查找控件
    private Button bt_dial = (Button)findViewById(R.id.bt_dial);
    private TextView textview = (TextView)findViewById(R.id.textView);

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);  //加载布局

        bt_dial.setOnClickListener(new btListener());          //触发事件
    }
    private class btListener implements View.OnClickListener{  //自定义监听类,继承OnClickListener
        public void onClick(View view){                        //实现方法
            textview.setText("Hello World");                  //点击按钮改变文本框内容
        }
    }
}

 

三、Activity继承View.OnClickListener

     由Activity实现OnClick(View view)方法,在OnClick(View view)方法中用switch-case对不同id代表的button进行相应的处理

     这种方法是Onclick的最佳使用方法

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    //通过id查找控件
    private Button bt_dial = (Button)findViewById(R.id.bt_dial);
    private TextView textview = (TextView)findViewById(R.id.textView);

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);  //加载布局

        bt_dial.setOnClickListener(this);          //触发事件
    }
    public void onClick(View view ) {              //实现方法
        switch(view.getId()){
            case R.id.bt_dial:
                textview.setText("Hello World");
                break;
            default:
                break;
        }
    }
}

 

四、在XML文件中显示指定按钮的onClick属性

       这样点击按钮时会利用反射的方式调用对应Activity中的click()方法:

       这种写法整个代码中都不用声明button就可以实现button的单击事件。

 
android:onClick="setTexview"
 

  setTexview是一个方法名,你要在这个布局对应的Activity里面实现这个方法。

    public void setTexview(View view){
        textview.setText("Hello World");
    }