В чем проблема?
Проблема здесь будет в том, что экземпляр вашего класса Artikujt
, который вы хотите удалить из массива, отличается от того, который вы прочитали из предпочтений.
Как только вы используете Gson
, чтобы превратить вашу строку в новый массив, она будет генерировать совершенно новые экземпляры вашего класса, и, очевидно, они не будут такими же, как раньше. Может быть, они равны, но они не одинаковые экземпляры.
Что вы можете сделать, чтобы решить эту проблему?
Я предполагаю, что вы хотите иметь каждый Artikujt
только один раз. Что означает, что вы также можете использовать HashSet
. Преимущество этого в том, что он будет использовать функцию hashCode()
, чтобы определить, какой экземпляр в наборе вы хотите удалить. Так что вам просто нужно переопределить эту функцию hashCode()
в вашем классе модели и использовать все ее свойства для вычисления хеш-кода. Вы можете найти пример здесь: https://www.sitepoint.com/how-to-implement-javas-hashcode-correctly/
Sidenote
Ваш блок else не нужен. Это не имеет большого смысла. Вы создаете пустой ArrayList, затем удаляете sth из этого пустого списка, а затем сохраняете этот пустой список в общих настройках. Логика c вашего кода не изменится, если вы просто удалите этот блок else.