我在发布之前已经搜索了一些类似的问题 - 但是我在Android和数据绑定方面有一个普遍的问题(我检查的其他答案并没有让我更进一步......).假设你有一个类车辆:
public class Vehicle {
private Owner owner;
private String brand;
//getter and setter for above attributes...
}
Run Code Online (Sandbox Code Playgroud)
这是所有者类....
public class Owner {
private String name;
}
Run Code Online (Sandbox Code Playgroud)
现在 - 我最近正在研究微软WPF采用的MVVM(ModelView-ViewModel)模式.这让我想知道:假设我想绑定我的所有者对象的name属性,这是Vehicle对象的子对象 - 在Android中是否会有一些标准方法来实现这一点?还假设,在我可以更新模型之前,我可能必须验证输入?
我想象以下组件(假设MVVM):
现在,当我将EditTexts,TextViews等添加到视图中时,我希望它们绑定到我的上下文对象的某些属性(在这种情况下为Vehicle)......如果我的问题不明确或者您需要进一步的信息,请执行此操作让我知道:)提前谢谢.
Ps我认为熟悉WPF的人现在可能是我的意思吗?我自己刚刚阅读了WPF并发现它是处理内容的好方法.
PPs我知道android绑定项目,但我想知道Android中是否存在某种内置方法,或者某些约定有人关注:)这真的更像是一个绑定理论问题我猜...
我在Java中使用正则表达式有一个奇怪的问题.我在这里测试了我的正则表达式和我的价值而且它有效.它说有3组(正确)第一组(不是第0组!)的匹配是SSS,第2组的匹配是BB,第3组的匹配是0000.但我的代码在下面失败,我很擅长为什么......
String pattern = "([^-]*)-([\\D]*)([\\d]*)";
String value = "SSS-BB0000";
Matcher matcher = Pattern.compile(pattern).matcher(value);
//group() is equivalent to group(0) - it fails to match though
matcher.group();
Run Code Online (Sandbox Code Playgroud)
以下是上述网站的匹配结果截图:

如果有人能指出我犯的错误,我真的很感激...另外一点:奇怪的是,如果我执行以下代码,则返回true,这意味着匹配应该是可能的......
//returns true
Pattern.matches(pattern, value);
Run Code Online (Sandbox Code Playgroud) 在我的Android模拟器上发生了奇怪的事情(代码和模拟器在API级别10上运行 - 是Android 2.3.3):我的emu上的当前日期是22.08.2011 - 如果我用这些设置初始化DatePickerDialog(使用新的值) Date() - 使用当前日期/时间初始化Date)然后失败,但有以下异常:
08-22 02:14:23.731: ERROR/AndroidRuntime(3038): FATAL EXCEPTION: main
08-22 02:14:23.731: ERROR/AndroidRuntime(3038): java.lang.IllegalArgumentException: current should be >= start and <= end
08-22 02:14:23.731: ERROR/AndroidRuntime(3038): at android.widget.NumberPicker.setCurrent(NumberPicker.java:288)
08-22 02:14:23.731: ERROR/AndroidRuntime(3038): at android.widget.DatePicker.updateSpinners(DatePicker.java:357)
08-22 02:14:23.731: ERROR/AndroidRuntime(3038): at android.widget.DatePicker.init(DatePicker.java:352)
08-22 02:14:23.731: ERROR/AndroidRuntime(3038): at android.app.DatePickerDialog.<init>(DatePickerDialog.java:127)
08-22 02:14:23.731: ERROR/AndroidRuntime(3038): at android.app.DatePickerDialog.<init>(DatePickerDialog.java:86)
Run Code Online (Sandbox Code Playgroud)
所以我检查了DatePicker的源代码(对于API lvl 2.3.3),我检查了DatePicker代码(因为从我知道它在updateSpinners方法中失败的strack跟踪)和那条线357(上面的堆栈中的第四行) trace)它调用mYearPicker.setCurrent(mYear); 这让我觉得我的一年有些不对劲.我记录了我过去的那一年 - 这是2011年的预期.所以我手动通过了2010年而不是有效 - DatePickerDialog出现了 - 初始化为2010年(太糟糕了,我真的需要当年 - 2011年;)......).
我有点不知道原因是什么...我的模拟器上的日期 - 如上所述 - 正确设置为22.08.2011 - 我的开发PC设置为同一天...
关于我哪里出错的任何线索/想法?为了方便起见,我在初始化DatePickerDialog的代码片段:
// Initializes a …Run Code Online (Sandbox Code Playgroud) android datepicker android-widget android-datepicker android-sdk-2.3