如何在类中创建一个公共监听器

时间:2015-07-13 06:08:17

标签: android listener

我动态添加了某个视图(例如编辑文本,广播和复选框)。如何向所有视图添加公共侦听器,以便我可以访问其中的值(何时更改)?

3 个答案:

答案 0 :(得分:3)

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

例如,

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的对象并为所有视图添加

答案 1 :(得分:1)

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

你说你在哪里动态添加控件,所以它看起来像这样:

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();
    }
});

答案 2 :(得分:0)

如果要提供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();
            }
        }
    };