Я использую LiveData в своем приложении, и у меня есть модель и ViewModel. Вот моя модель и класс ViewModel:
public class HomeMenuModel {
String id;
String title;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
}
public class DashboardViewModel {
public MutableLiveData < HomeMenuModel > menuList = new MutableLiveData < > ();
private List<String> idList = new ArrayList<>();
private List<String> idLists = new ArrayList<>();
private List<String> titleList = new ArrayList<>();
public MutableLiveData < HomeMenuModel > setupMenu(Context mCtx) {
idList.add("homeData");
idList.add("homeVoiceAndSMS");
idList.add("homeRoaming");
idList.add("homeDigital");
titleList.add(mCtx.getString(R.string.homeData));
titleList.add(mCtx.getString(R.string.homeVoiceAndSMS));
titleList.add(mCtx.getString(R.string.homeRoaming));
titleList.add(mCtx.getString(R.string.homeDigital));
HomeMenuModel homeMenuModel = new HomeMenuModel();
for (int i = 0; i < idList.size(); i++) {
homeMenuModel.setId(idList.get(i));
homeMenuModel.setTitle(titleList.get(i));
}
menuList.setValue(homeMenuModel);
return menuList;
}
}
Я попытался добавить idList и titleList в setupMenu и вернуть menuList из функции. Я вызвал функцию setupMenu в своем фрагменте с помощью этого кода:
public class HomeFragment extends BaseFragment {
static final String TAG = "FragmentHome";
private FragmentHomeBinding mBinding;
@Inject
DashboardViewModel dashboardViewModel;
private Context mCtx;
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
setHasOptionsMenu(true);
}
@Override
public void onAttach(Context context) {
super.onAttach(context);
AndroidSupportInjection.inject(this);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
mBinding = DataBindingUtil.inflate(inflater, R.layout.fragment_home, container, false);
View v = mBinding.getRoot();
mCtx = mBinding.getRoot().getContext();
initEvent();
return v;
}
private void initEvent() {
mBinding.setDashboardView(dashboardViewModel);
dashboardViewModel.setupMenu(mCtx).observe(this, data - > {
Log.e("menuList", data.getTitle());
});
}
@Override
public String getTagFragment() {
return TAG;
}
}
Я регистрирую список меню в HomeFragment, но, к сожалению, я получил только последний элемент идентификатора или заголовка, возвращенный из наблюдения.
Что что мне здесь не хватает?
Почему я получаю только последний элемент результата вместо 4 результатов, созданных в функции setupMenu? Как мне получить все 4 результата?
Любая помощь будет принята с благодарностью.
Спасибо.