0
我是Android開發中的新成員,發出網絡請求後嘗試更新RecyclerView
控件中的項目視圖而不滾動它。據我所知,項目在滾動期間通過onBindViewHolder
事件刷新。有代碼。使用notifyItemChanged
方法來更新UI,但在用戶滾動之前它不起作用。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'是否正確。 –