【发布时间】:2018-04-03 17:09:35
【问题描述】:
我目前正在尝试从片段中检测另一个文件中的更改,并使用 LiveData 相应地更新 ui。我有一个类 - 带有用于我的应用程序数据的 getter 和 setter 的 datacontroller。在下面的代码中,我希望每次用户添加技能时,一个单独的片段中的 UI 都会发生变化。如果有人能指出为什么我的 UI 没有更新以及如何修复它,我将不胜感激?
技能的getter是:位于dataController类中,扩展了ViewModel
private MutableLiveData<List> skillMutable = new MutableLiveData<List>();
public MutableLiveData<List> getSkills(){
ArrayList<skill> listToReturn = new ArrayList<skill>();
try {
InputStream inputStream = context.openFileInput(skillFileName);
if (inputStream != null) {
InputStreamReader streamReader = new InputStreamReader(inputStream);
BufferedReader bufferedReader = new BufferedReader(streamReader);
String l;
skill toAdd;
while (( l = bufferedReader.readLine()) != null) {
System.out.println("MY line is" + l);
String[] skillSeparated = l.split("_");
toAdd= new skill(skillSeparated[0], skillSeparated[1]);
listToReturn.add(toAdd);
}
}
inputStream.close(); //close the file
} catch (java.io.FileNotFoundException e) {
//file doesnt exist
} catch (IOException e) {
e.printStackTrace();
}
skillMutable.setValue(listToReturn);
return skillMutable;
}
更新UI的代码是:这里,它位于一个扩展Fragment的类中
dataManager = new dataController(getContext());
dataManager.getSkills().observe(this, skillMutable -> {
// update UI
if(dataManager.getResumeNumber() == "1") {
resumeWebview.loadData(pdfManager.getResume1(), "text/html; charset=utf-8", "UTF-8");
}
});
【问题讨论】:
标签: java android observable android-livedata