214 похожих чатов

Всем привет ) Столкнулся с такой вот на мой взгляд интересной

проблемой )
Есть RecyclerView и есть некий Repository внутри которого лежит потокобезопасная коллекция, например, ConcurrentSkipListMap<Long, User>, ну или List какой нибудь.
Adapter в методе OnBindViewHolder(... , int position) берет элементы по position из коллекции
и вот тут проблема ... коллекция может измениться между чтениями таким образом, что я могу получить дубликат элемента. Например, у меня в коллекции 10 элементов. Я читаю 3 элемент. Другой поток thread_1 убивает все элементы начиная с 3 включительно. thread_2 добавляет несколько элементов, среди которых 3 элемент, который мы уже счиатли становится 4 элементом. Теперь thread main читает 4 элемент. Но, этот элемент у нас уже есть. И получается дублирование элементов при отображении.
Вобщем, либо я сильно туплю, либо лыжи не едут ))) Кто, что думает ?))) 🤓

2 ответов

1 просмотр

а почему recyclerview должен знать, что в репозитории лежит list или что-то другое? ну и брать из репозитория по позиции тоже не очень, она же может меняться даже для одного и того же элемента и без нескольких потоков

Список может содержать много элементов?

Похожие вопросы

Обсуждают сегодня

комрады, че-та лыжы не едут var tmpFont: TFont; begin tmpFont:= TFont.Create; try case rgFontColor.ItemIndex of 0: tmpFont.Color:= clWindowText; 1: tmpFo...
Ed Doc
34
Интересно, нет ли какого-то способа получить из dll не адрес самой метки, а адрес со смещением?
The Bird of Hermes
54
Можно вообще написать: Person fName' lName' age'. Тогда действительно имена полей потребуются лишь в строковом виде, чтобы эти fName' и т.д. достать :-) Но разве для этого нуж...
Михаил
8
generic procedure function test<T>(param: T); type case T of longint: NewT = word; longword: NewT = byte; end; var v1: NewT; Как это можно сделать? Чтобы у меня...
notme
21
Делал задачу вот такую https://stepik.org/lesson/4985/step/9?unit=1083 получилось такое https://play.haskell.org/saved/ipKrepqe оно работает, тестов много не писал, но работае...
Fedor
22
Скажите, можно ли как-то "переместить" динамический массив из одной переменной в другую? Скажем, переместить из TList<> в TArray<>. Именно переместить, а не скопировать. Если ...
Eugene Krasnikov (ᴊɪɴ x)
35
преобразовать в число или в один тип?
Alexey Kulakov
11
Hello everyone I am trying to run 4 year old project and I am having this issue anyone can help?
Nitish Garg
11
Всем привет, прошу совета по сложившейся ситуации: Windows приложение подключается к БД MySQL используя Firedac. При работе с версией MySQL 5.7 все отлично, но когда подключаю...
Constantine
6
Всем добрый вечер. Нужна помощь с прикруткой telegram-vapor-bot к проекту Vapor. Удалось после старта приложения отправить тестовое сообщение в бот, вот только сразу после это...
advanc3d
3
Карта сайта