не могу, комп остался на работе, но проблема не дает уснуть. Все происходит внутри фрагмента. Короче с сервера прилетает объект, который содержит List, из элементов списка строится recyclerView. Далее можно вызвать диалоговое окно (оно вынесено в отдельный класс) 1) чтобы редактировать данные (тап по элементу recyclerView - в окно передается выбранный объект) 2) чтобы добавить новый элемент (при клике по кнопке в фрагменте). Также необходимо, чтобы при onBackPressed вылезал алерт с вопросом сохранить или нет изменения в списке. Как я все это организовал:
1) в фрагменте объявляю
MyObjA objA = new MyObjA();
List<MyObjB> list = new ArrayList<>();
2) в методе фрагмента onViewCreated() {
.........
objA = (MyObjA) getArguments()...(короче из bundle вытаскиваю объект)
list = objA.getList();
Далее вызываю метод который загружает адаптер
loadAdapter(); }
3) метод loadAdapter выглядит так: loadAdapter() {
adapter = new MyAdapter(list, getContext());
Здесь что-то там recyclerView c LayoutManager
recyclerView.setAdapter(adapter); }
4) далее в классе диалога есть интерфейс через который в фрагмент передаю отредактированный объект и закрываю окно - в фрагменте перезаписываю два метода интерфейса диалогового окна. Это:
elementEdited(MyObjB obj, int position) { list.set(position, obj); } и
elementAdded(MyObjB obj) { list.add(obj); }
Вот тут и заключается вся проблема: я здесь добавляю элемент в list, но этот же элемент добавляется в List внутри objA - почему так происходит? Может кто-нибудь объяснить? То есть изменяется два объекта, а не только list . Если что я только месяц назад начал андроид, поэтому пожалуйста тапками не кидаться. P.S.: я не поленился все это написать чтобы самому еще раз просмотреть всю картину действий. Заранее спасибо
вот оно, ВОТ ОНО БЛЯДЬ! )))
видимо, потому что это один и тот же объект
Обсуждают сегодня