今天有人告诉我,我们可以在我们的 Android 项目中引入 MVC(或准 MVC)架构。我有一些类包含主要由用户输入的信息,我希望我的视图(假设它是TextView
,为了讨论)显示它。我最初的想法是,每次我更新包含数据的类时,我都会调用一个方法来将其反映在我的TextView
.
Data d = new Data();
TextView t = (TextView) findViewById(R.id.IamTextView);
// ....
d.setS("Foo"); // <--- Data updated!
t.setText(d.getS()); // <--- View updated, too!
这无疑是蹩脚的,尽管只要数据更新的情况非常有限并且我们知道它们都在哪里就可以了,但我想尝试一些更酷更聪明的东西。所以我正在定义一个自定义EventListener
...
public class Data {
protected int i;
protected double d;
protected String s;
//Setter & Getter omitted!
}
public interface Data.onUpdatedListener {
public void onUpdated (Data d);
}
public class TestActivitiy extends Activity implements Data.onUpdatedListener {
Date[] d;
//onCreate() omitted!
@Override public void onUpdated (Data d) {
// I want to reflect this change on my Views, like below.
TextView t = (TextView) findViewById(R.id.IamTextView);
t.setText(d.getS());
}
}
我知道我必须创建一个用作 Controller 的专用类,其作用是通知 Activity 发生了更新以及它是哪个对象(如果我将每个成员变量都设置Data
为onUpdated()
我只能将“差异”发送给 Activity,而不是整个对象)。
我的问题 01:
我不确定如何通知我的更新活动(换句话说,如何触发onUpdated()
方法)。
我的问题 02: 我不确定如何确定对象已更新。如果有任何成员不同,我想通知它,但如何?我们是否应该始终保留对象的最新状态,并将其所有成员变量与当前变量的成员变量进行比较?