У меня здесь сложная проблема.
Я инициализирую свой RecyclerView с некоторыми данными, но асинхронно получаю данные из своего веб-сервиса и хочу использовать эти данные, чтобы они были в моем RecyclerView, но это"слишком поздно", потому что мой RecyclerView уже инициализирован.
Вот некоторый код:
Прежде всего, я инициализирую свой RecyclerView с некоторыми данными
JSONArray medias; <- Global variable
ServiceProvider serviceProvider = new ServiceProvider(); <- Global variable where I'm doing my request
public void performRequest()
{
for (int j = 0; j < 3; j += 1) {
JSONObject newElem = new JSONObject();
newElem.put("path", "test");
newElem.put("state", "ongoing");
newElem.put("name", "element " + j);
medias.put(newElem);
serviceProvider.addMedia(getActivity(), new CallbackInterface() {
@Override
public void callbackaddMedia(Boolean success, JSONObject obj) {
if (success && obj != null)
{
//Here I want to use the response object like
//Update medias item state by obj.optString("state");
}
}
});
}
initRecyclerView();
}
private void initRecyclerView(){
adapter = new DocumentsAdapter(getActivity(),false, medias, this);
LinearLayoutManager mLayoutManager = new LinearLayoutManager(getContext());
binding.recyclerAll.setLayoutManager(mLayoutManager);
binding.recyclerAll.setItemAnimator(new DefaultItemAnimator());
binding.recyclerAll.setAdapter(adapter);
}
Икак я уже сказал, асинхронно я вызываю Web-сервис, который отправляет мне ответ, подобный этому, каждый раз с другим mediaId и состоянием:
{
"success": true,
"mediaId": "307",
"state": "success"
}