onBindViewHolder не вызывается после вызова diffResult.dispatchUpdatesTo (this) - PullRequest
0 голосов
/ 11 декабря 2019

Я настраиваю свои данные в режим переработки следующим образом:

public void setData(List<Notification> newNotifications) {
        DiffUtil.DiffResult diffResult = getDiffBetweenNewAndOldList(newNotifications);
        diffResult.dispatchUpdatesTo(this);
        this.notificationList.clear();
        this.notificationList.addAll(newNotifications);
    }

Теперь проблема, с которой я сталкиваюсь, заключается в том, что, когда я получаю новые дополнительные данные (например, старый список для размера 10, и я получаюданные на следующей странице для следующих 10 значений), в это время вызывается мой onBindViewHolder:

@Override
    public void onBindViewHolder(@NonNull NotificationViewHolder holder, int position) {
        holder.bindView(notificationList.get(position));
        if (position == notificationList.size() - 1) {
            EventBus.getDefault().post(new UpdateEvent.GetNotificationList(GetNotificationDataFrom.ON_LOAD_NEXT_PAGE, notificationList.get(position).getNotification_time()));
        }
    }

Когда я обновляю свои данные и снова получаю 1-ю страницу списка, onBindViewHolder не вызывается. При использовании notifyDataSetChanged () такой проблемы не возникает. Как я могу решить эту проблему?

1 Ответ

0 голосов
/ 11 декабря 2019

Вы можете попробовать:

public void setData(List<Notification> newNotifications) {
        DiffUtil.DiffResult diffResult = getDiffBetweenNewAndOldList(newNotifications);
        this.notificationList.clear();
        this.notificationList.addAll(newNotifications);
        diffResult.dispatchUpdatesTo(this);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...