这是一个关于Android开发的通用问题的问题,我想解决。有时您有多个按钮/文本视图等,它们都需要连接几乎相同的侦听器。唯一的区别是每个按钮/视图都与不同的字段变量相关联。因此,每个 UI 元素的侦听器都具有完全相同的代码,除了访问/更改的字段变量。
实现此目的的一个可怕方法是进行大量代码复制,因此您为每个按钮复制侦听器的代码,并且只更改所需的变量,但这显然是可怕的解决方案。
我尝试创建一个返回匿名侦听器类的侦听器 creator 方法,但无法弄清楚如何将相关字段变量作为参数传递给 creator 方法,以便匿名侦听器可以使用它们。
如何才能很好地解决这个问题?
如果您的侦听器在其"侦听器"方法中有很多代码,并且您只需要更改为他们有权访问的字段(读/写),则可以执行以下操作。
首先,表示可读/可写事物的接口:
public interface Model<T> {
T getFieldValue();
void setFieldValue(T value);
}
然后侦听器使用该东西:
public class TheListener<T> ... {
private final Model<T> model;
public TheListener(Model<T> model) {
this.model = model;
}
public void onClick(...) {
...
// read access
model.getFieldValue();
...
// write access
model.setFieldValue(v);
...
}
}
然后使用它:
new TheListener<String>(new Model<String>() {
public String getFieldValue() {
return field1;
}
public void setFieldValue(String v) {
field1 = v;
}
});
new TheListener<String>(new Model<String>() {
public String getFieldValue() {
return field2;
}
public void setFieldValue(String v) {
field2 = v;
}
});
等等。