Android 如何在类中创建公共侦听器
我动态添加了特定视图,例如编辑文本、收音机和复选框。如何将公共侦听器添加到所有视图中,以便在其更改时可以访问其中的值?如果要提供click事件侦听器,只需在oncreate方法中定义以下代码即可Android 如何在类中创建公共侦听器,android,listener,Android,Listener,我动态添加了特定视图,例如编辑文本、收音机和复选框。如何将公共侦听器添加到所有视图中,以便在其更改时可以访问其中的值?如果要提供click事件侦听器,只需在oncreate方法中定义以下代码即可 btnSubmit.setOnClickListener(clicklistener); 您的自定义侦听器如下所示 private OnClickListener clicklistener = new OnClickListener() { @Override pu
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更改监听器,以便可以访问更改时的值。每个视图类型都有不同的监听器,因此,您必须为它们分配不同的侦听器。为您的自定义事件创建自定义侦听器怎么样?例如,在发生更改时…然后您需要为每个控件创建自定义控件。创建一个监听器,我也这么做了。我认为他们可能是一种新的方法,我也这么做了。我想他们可能是一种新的方法。