Nano Hash - криптовалюты, майнинг, программирование

Как предотвратить повторение одного и того же элемента, отображаемого в RecycleView, при извлечении Swipe Refresh Layout?

У меня есть RecyclerView внутри SwipeRefreshLayout, который получит Post JSON с моего php-сервера.

Итак, ситуация сейчас такова, у меня есть только 5 post в моей базе данных. Поэтому, когда я впервые запускаю RecyclerView, он показывает 5 post, это не проблема.

Основная проблема сейчас заключается в том, что каждый раз, когда я вытягиваю SwipeRefreshLayout, он снова вытаскивает те же 5 post для отображения в RecyclerView, поэтому теперь всего 10 элементов внутри RecyclerView, и один и тот же пост появляется 2 раза. Когда я снова вставляю, он появится еще раз, так что теперь всего 15 элементов, каждый из которых post появляется 3 раза. Так что это будет появляться бесконечное количество раз.

Я попробовал ответ из этого вопрос, который переопределяет следующие 2 метода, но тот же элемент все еще появляется.

@Override
public long getItemId(int position) {
    return position;
}

@Override
public int getItemViewType(int position) {
   return position;
}

Итак, что я хочу, так это то, что если в базе данных доступно только 5 posts, он просто отображает 5 posts в RecyclerView. Когда пользователь вытаскивает SwipeRefreshLayout, он не будет отображать 5 одинаковых posts еще раз, но не говорит пользователю больше ни о какой новой публикации .

Как я могу решить эту проблему?


  • когда вы вытаскиваете, вы добавляете элементы в свой список массивов, я думаю, но перед добавлением просто проверьте, существует ли элемент в списке массивов, если в списке массивов уже есть элемент, то не добавляйте элемент снова 13.03.2017

Ответы:


1

очистить adpater, когда пользователь потянет swiper, и снова перезагрузить новые данные, чтобы избежать повторения

попробуйте использовать этот метод для очистки данных:

public void clear() {
        int size = this.myList.size();
        if (size > 0) {
            for (int i = 0; i < size; i++) {
                this.myList.remove(0);
            }

            this.notifyItemRangeRemoved(0, size);
        }
    }
13.03.2017
  • братан, это должно быть remove(0), это удалить 1-й элемент в списке адаптеров? 13.03.2017
  • потому что теперь в моем списке 5 элементов, но в RecyclerView отображается только 4 элемента. 13.03.2017

  • 2

    попробуйте удалить все элементы из массива перед чтением JSON

    13.03.2017
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..