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

Ребят, скажите что не так я делаю. Сам код показать

не могу, комп остался на работе, но проблема не дает уснуть. Все происходит внутри фрагмента. Короче с сервера прилетает объект, который содержит 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.: я не поленился все это написать чтобы самому еще раз просмотреть всю картину действий. Заранее спасибо

2 ответов

14 просмотров

вот оно, ВОТ ОНО БЛЯДЬ! )))

видимо, потому что это один и тот же объект

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

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

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
Ребят в СИ можно реализовать ООП?
Николай
33
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта