_button_1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(_textView.getText().length()>=18){
Toast.makeText(getApplicationContext(),"长度超出要求",Toast.LENGTH_SHORT).show();
}
else {
_textView.setText(_textView.getText()+"1");
}
}
});
Button _button_2=(Button)this.findViewById(R.id.button_2);
_button_2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(_textView.getText().length()>=18){
Toast.makeText(getApplicationContext(),"长度超出要求",Toast.LENGTH_SHORT).show();
}
else {
_textView.setText(_textView.getText()+"2");
}
}
});
Button _button_3=(Button)this.findViewById(R.id.button_3);
_button_3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(_textView.getText().length()>=18){
Toast.makeText(getApplicationContext(),"长度超出要求",Toast.LENGTH_SHORT).show();
}
else {
_textView.setText(_textView.getText()+"3");
}
}
});
上述代码中存在大量的相似代码,又不能写成函数的形式,该如何简化这个代码。
给你写了一个demo
new View.OnClickListener可以赋值给一个变量,底下可以复用
View.OnClickListener listen = new View.OnClickListener;
将该段代码封装起来,赋值给给一个View.OnClickListener对象,例如View.OnClickListener listener = View.OnClickListener 。
你那样写无非是用了匿名内部类的方式,button.setOnClickListener(这里本身就是一个监听器对象), 所以这样写可以合并
重复代码,达到简洁易读的效果。
还通过实现一个接口的方式,来实现监听器实现OnClickListener接口,进行setOnClickListener(this)绑定。
这个可以批量设置,比较方便。通过Switch控制对不同Button Click事件的响应方法,在此不做赘述具体实现
方式你可以自己搜下然后研究下。
试了2楼的做法,确实减少了很大一部分代码,但还是存在一些重复代码,好像也不能用数组。
建个包把相同的代码放在里面