【发布时间】:2017-09-17 23:22:50
【问题描述】:
基本上,我的 ViewModel 将以下 POJO 保存为 MutableLiveData:
public class SubredditAddition {
private final ArrayList<Keyword> mKeywords = new ArrayList<>();
}
如果mKeyword.size() > 0,我希望视图消失
目前,我认为以下行:
android:visibility="@{viewModel.subredditAddition.keywords.size() == 0 ? View.GONE : View.VISIBLE}"
但是,更改 mKeywords 数组大小不会影响视图的可见性。如何让视图实时响应 ArrayList 的大小?
更新:
我的 SubredditAddition 类现在使用 ObservableArraylist,如下所示:
public class SubredditAddition {
private final ObservableArrayList<Keyword> mKeywords = new ObservableArrayList<>();
}
我的 ViewModel 看起来像这样,在 MutableLiveData 中包含一个 SubredditAddition:
public class SubredditSelectionViewModel extends AndroidViewModel {
private MutableLiveData<SubredditAddition> mSubredditAddition = new MutableLiveData<>();
public SubredditSelectionViewModel(Application application) {
super(application);
mSubredditAddition.setValue(new SubredditAddition());
}
}
我的 Fragment 有以下代码来更新关键字:
public class SubredditSelectionFragment extends Fragment {
private void saveTag(Keyword newKeyword) {
SubredditSelectionViewModel viewModel =
ViewModelProviders.of(this).get(SubredditSelectionViewModel.class);
ObservableArrayList<Keyword> keywords = viewModel.getSubredditAddition().getKeywords();
keywords.add(newKeyword);
}
}
我的 XML 视图如下所示:
<RelativeLayout ....
android:visibility="@{viewModel.subredditAddition.keywords.size() == 0 ? View.VISIBLE : View.GONE}">
但是,当我通过 Fragment 中的 saveKeyword() 方法添加关键字后,我的 UI 仍然没有更新。我该如何解决这个问题?
【问题讨论】:
标签: java android data-binding view android-databinding