Android 如何在类中创建公共侦听器

Android 如何在类中创建公共侦听器,android,listener,Android,Listener,我动态添加了特定视图,例如编辑文本、收音机和复选框。如何将公共侦听器添加到所有视图中,以便在其更改时可以访问其中的值?如果要提供click事件侦听器,只需在oncreate方法中定义以下代码即可 btnSubmit.setOnClickListener(clicklistener); 您的自定义侦听器如下所示 private OnClickListener clicklistener = new OnClickListener() { @Override pu

我动态添加了特定视图,例如编辑文本、收音机和复选框。如何将公共侦听器添加到所有视图中,以便在其更改时可以访问其中的值?

如果要提供click事件侦听器,只需在oncreate方法中定义以下代码即可

btnSubmit.setOnClickListener(clicklistener);
您的自定义侦听器如下所示

private OnClickListener clicklistener = new OnClickListener() {

        @Override
        public void onClick(View v) {
            try {
                switch (v.getId()) {
                case R.id.btnSubmit:
                // Do your code....
                    break;
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    };

如果您想提供click事件监听器,只需在oncreate方法中定义以下代码

btnSubmit.setOnClickListener(clicklistener);
您的自定义侦听器如下所示

private OnClickListener clicklistener = new OnClickListener() {

        @Override
        public void onClick(View v) {
            try {
                switch (v.getId()) {
                case R.id.btnSubmit:
                // Do your code....
                    break;
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    };

创建一个自定义的抽象侦听器类,它通过不同的视图实现所有需要的侦听器

比如说,

public abstract class CustomListener implements OnCickListener, CheckedChangedListener....{


public void onClick(View view){
onEvent(view);
}

public void onCheckedChanged(View view){
onEvent(view);
}

public abstract void onEvent(View view);

}

然后在类中创建此customListener的对象并为所有视图添加

创建一个自定义抽象侦听器类,该类通过不同视图实现所有需要的侦听器

比如说,

public abstract class CustomListener implements OnCickListener, CheckedChangedListener....{


public void onClick(View view){
onEvent(view);
}

public void onCheckedChanged(View view){
onEvent(view);
}

public abstract void onEvent(View view);

}

然后在您的类中创建此customListener的对象,并为所有视图添加视图。根据您分阶段回答问题的方式,我假设您没有使用过这么多,您很可能不需要创建自定义控件或自定义侦听器

您说过您需要在其中动态添加控件,所以看起来像这样:

EditText editText = new EditText(this);
//editText setup...
RadioButton radioButton = new RadioButton(this)
//radioButton setup...
CheckBox checkBox = new CheckBox(this);
//checkBox setup...
然后,您可以向其中添加侦听器,如下所示(可选)调用已更改的方法:

EditText editText = new EditText(this);
//editText setup...
editText.addTextChangedListener(new TextWatcher() {
    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {

    }

    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {
        changed();
    }
    @Override
    public void afterTextChanged(Editable s) {

    }
});
RadioButton radioButton = new RadioButton(this);
//radioButton setup...
radioButton.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
        changed();
    }
});
CheckBox checkBox = new CheckBox(this);
//checkBox setup...
checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
        changed();
    }
});

从您分阶段回答问题的方式来看,我假设您没有使用过这么多,您很可能不需要创建自定义控件或自定义侦听器

您说过您需要在其中动态添加控件,所以看起来像这样:

EditText editText = new EditText(this);
//editText setup...
RadioButton radioButton = new RadioButton(this)
//radioButton setup...
CheckBox checkBox = new CheckBox(this);
//checkBox setup...
然后,您可以向其中添加侦听器,如下所示(可选)调用已更改的方法:

EditText editText = new EditText(this);
//editText setup...
editText.addTextChangedListener(new TextWatcher() {
    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {

    }

    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {
        changed();
    }
    @Override
    public void afterTextChanged(Editable s) {

    }
});
RadioButton radioButton = new RadioButton(this);
//radioButton setup...
radioButton.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
        changed();
    }
});
CheckBox checkBox = new CheckBox(this);
//checkBox setup...
checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
        changed();
    }
});

什么类型的监听器?@NicolasTyler更改监听器,以便可以访问更改时的值。每个视图类型都有不同的监听器,因此您必须为它们分配不同的监听器。为自定义事件创建自定义监听器怎么样?例如,更改时……然后您需要为每个控件创建自定义控件。并创建一个监听器。什么类型的监听器?@NicolasTyler更改监听器,以便可以访问更改时的值。每个视图类型都有不同的监听器,因此,您必须为它们分配不同的侦听器。为您的自定义事件创建自定义侦听器怎么样?例如,在发生更改时…然后您需要为每个控件创建自定义控件。创建一个监听器,我也这么做了。我认为他们可能是一种新的方法,我也这么做了。我想他们可能是一种新的方法。