Я пытаюсь использовать MVVM, я пытаюсь получить данные в моем Viewodel (обычно поступающем из службы) и установить их для своей деятельности, но кажется, что это не работает, когда я пытаюсь просто простой ArrayList ContractModel и добавьте его в мои адаптеры, все работает нормально, но когда я пытаюсь вызвать мои ViewModel, вещи перестают работать. результат.
Это мой MainActivity:
public class MainActivity extends AppCompatActivity {
ContractsListViewModel contractsListViewModel;
@BindView(R.id.contractList)
RecyclerView contractList;
RecyclerView.Adapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.bind(this);
contractList.setLayoutManager(new LinearLayoutManager(this));
contractsListViewModel = ViewModelProviders.of(this).get(ContractsListViewModel.class);
contractsListViewModel.call();
adapter = new ContractListAdapter(this, contractsListViewModel.contractList.getValue());
contractList.setAdapter(adapter);
}
}
Это мой ViewModel:
public class ContractsListViewModel extends ViewModel {
public MutableLiveData<List<ContractModel>> contractList;
MutableLiveData<Boolean> isLoading;
MutableLiveData<Boolean> error;
public void call(){
fetchContracts();
}
public void fetchContracts(){
ContractModel contractModel = new ContractModel(1, "hfdfd", "h");
ContractModel contractModel1 = new ContractModel(1, "hfdffddd", "h");
ContractModel contractModel2 = new ContractModel(1, "hdffd", "j");
ContractModel contractModel3 = new ContractModel(1, "hdffdfd", "h");
List<ContractModel> list = new ArrayList<ContractModel>();
list.add(...allofthem);
contractList.setValue(list);
}
}
Мой адаптер работает нормально, так как он работал с ArrayList, о котором я упоминал выше , Но вот:
public class ContractListAdapter extends RecyclerView.Adapter<ContractListAdapter.ContractViewHolder> {
List<ContractModel> contracts;
Context context;
public ContractListAdapter(Context context, List<ContractModel> contracts){
this.context = context;
this.contracts = contracts;
}
@NonNull
@Override
public ContractViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.contrat, parent, false);
return new ContractViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull ContractViewHolder holder, int position) {
holder.bind(contracts.get(position));
}
@Override
public int getItemCount() {
return this.contracts.size();
}
public class ContractViewHolder extends RecyclerView.ViewHolder {
@BindView(R.id.courtier)
TextView courtier;
public ContractViewHolder(@NonNull View view){
super(view);
ButterKnife.bind(this, view);
}
public void bind(ContractModel contractModel){
courtier.setText(contractModel.getCourtier());
}
}
}
Любая помощь будет высоко ценится.