Я новичок в разработке Android, после того как сделайте сетевой запрос, пытаясь обновить элемент в элементе управления RecyclerView
без прокрутки. Насколько я понимаю, элементы обновляются во время прокрутки через onBindViewHolder
event.here есть код. Использование метода notifyItemChanged
для обновления пользовательского интерфейса, но оно не работает до тех пор, пока пользователь не прокрутит список.RecyclerView не обновляет пользовательский интерфейс после изменения данных
Примечание: favoriteMatches
не является моим источником данных. Это еще один список объектов, в котором хранятся избранные пользователи, внутри onBindViewHolder
событие. Я чешу, если элемент favoriteMatches.contains(match)
, то визуализируйте как элемент fav.
call.enqueue(new Callback<AddRemoveFavoriteRequest.Response>() {
@Override
public void onResponse(Call<AddRemoveFavoriteRequest.Response> call, Response<AddRemoveFavoriteRequest.Response> response) {
AddRemoveFavoriteRequest.Response body = response.body();
Utilities.dismissProgressDialog(getActivity(),progressBar);
if(body.error == null){
if(add){
favoriteMatches.add(matchId);
}
else {
favoriteMatches.remove(matchId);
}
adapter.notifyItemChanged(absolutePosition);
Preferences.getDefaultPreferences().edit()
.putStringSet(Preferences.PREF_FAVORITES,favoriteMatches)
.apply();
}else{
Utilities.showSnackBar(getActivity(),recyclerView,body.error);
}
}
@Override
public void onFailure(Call<AddRemoveFavoriteRequest.Response> call, Throwable t) {
t.printStackTrace();
Utilities.dismissProgressDialog(getActivity(),progressBar);
}
});
Что такое 'absolutePosition'? –
Попробуйте использовать 'adapter.notifyDataSetChanged()', если это не работает, тогда ваша проблема в ваших данных. Если это работает, проверьте, правильна ли 'absolutePosition'. –