Я использую переоснащение 2, чтобы получить JSON Array
, и я хочу, чтобы создать новый ManagerListAdapter
(Это адаптер для RecyclerView
) и передать ArrayList
(который я получил от JSON) в конструкторе.Как получить ответ от другого потока с помощью Дооснащения 2.0
На данный момент я успешно получил этот список в onResponse
. Но это другая тема.
Каков наилучший способ перенести его в основной поток? Возможно, мне нужно использовать RxJava и RxAndroid?
private void initRecyclerView() {
RecyclerView managersRecyclerView = (RecyclerView) view.findViewById(R.id.managersRecyclerView);
managersRecyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
managersRecyclerView.setAdapter(new ManagerListAdapter(getManagers()));
// getRemoteManagers();
}
private void getRemoteManagers() {
ApiObject client = ServiceGenerator.createService(ApiObject.class);
Call<List<ManagerDTO>> call = client.getManagers();
call.enqueue(new Callback<List<ManagerDTO>>() {
@Override
public void onResponse(Call<List<ManagerDTO>> call, Response<List<ManagerDTO>> response) {
if (response.isSuccessful()) {
List<ManagerDTO> managers = response.body(); //I want to add this List in RecyclerAdapter
sortManagers(managers);
}
}
@Override
public void onFailure(Call<List<ManagerDTO>> call, Throwable t) {
}
});
}
private List<ManagerDTO> getManagers() {
//It's for test.
List<ManagerDTO> managers = new ArrayList<>();
managers.add(new ManagerDTO("Alex Pavlov", 100));
managers.add(new ManagerDTO("Ivan Pavlov", 95));
managers.add(new ManagerDTO("Petr Pavlov", 99));
managers.add(new ManagerDTO("Stepan Pavlov", 100));
managers.add(new ManagerDTO("Azik Pavlov", 100));
managers.add(new ManagerDTO("Azik Myand", 100));
managers.add(new ManagerDTO("Azik Specca", 50));
managers.add(new ManagerDTO("Azik Kane", 0));
managers.add(new ManagerDTO("Azik McDonald", 99));
managers.add(new ManagerDTO("Azik Jagr", 1));
sortManagers(managers);
return managers;
}
Да RxJava будет идеальным выбором, поскольку дооснащения обеспечивает поддержку RxJava в самой библиотеке. AsyncTask также может использоваться как альтернатива. –