Android - Получение и изменение одного и того же списка из двух разных действий

-5

В моем приложении я MyList.class который выглядит следующим образом:

public class MyList {

private ArrayList<Obj> objList = new ArrayList<>();

//adds object to list
public void addObjToList(Obj obj) {
objList.add(obj);
}

//gets the whole list
public static ArrayList getObjList() {return objList;}

//gets the size of the list
public static int getObjListSize() {return objList.size();}

//removes obj from list based on his position
public void removeObj(int pos) {
objList.remove(pos);
}

}

Из CreateObj.class где я создаю Obj меня есть этот код, чтобы добавить его в objList:

// creates the new object
Obj newObj = new Obj("Name", 3 /*int*/ );

// creates a new List
MyList myList = new MyList();

// adds the obj into the list
myList.addObjToList(newObj);

Он успешно добавляет obj к списку. Теперь из моего Main_Activity.class мне нужно получить его и раздуть его в recyclerView, который я делаю в onCreate() следующим образом:

currentObjList = MyList.getObjList();

//puts list into recycler
recyclerView = (RecyclerView) findViewById(R.id.recycler);
recyclerView.setLayoutManager(new LinearLayoutManager(this,
LinearLayoutManager.VERTICAL, false));

adapter = new RecyclerAdapter(this, currentObjList);
recyclerView.setAdapter(adapter);

Обратите внимание, что я не устанавливаю MyList myList = new MyList() в моей Main_Activity, потому что я хочу, чтобы список был тем, который был создан в классе CreateObj.

Очевидно, это неправильный способ сделать это, потому что, если, скажем, я хочу удалить элемент из recyclerView, мне нужно также удалить его из objList (в MyList.class), и это невозможно, так как я не могу доступ к методам MyList.class без установки new MyList(), и если я его установлю на новый, он не сохранит Obj, добавленный из класса CreateObj.

Вкратце: как я могу иметь один и тот же objList как доступный, так и модифицируемый из обоих, CreateObj.class и Main_Activity.class.

спросил(а) 2017-05-14T17:35:00+03:00 3 года, 1 месяц назад
0
54

После моего комментария это проект того, что я предлагал. Обратите внимание, что я не запускал этот код, поэтому он должен иметь ошибки и опечатки, это просто отражает идею того, что я предлагаю.

Активность, которая получает вход, содержит ссылку на класс, который создает объект и класс, содержащий ArrayList.

При вводе пользователя активность просит создателя объекта создать объект и передать его обратно в действие. Затем действие добавляет его в список. И, наконец, он уведомляет адаптер переработчика о том, что данные были изменены.

В MainActivity:

    private CreateObj createObj;
private MyList myList;

//Other memeber variables for Input elements on the screen
//used in createObje.create() to build the new object.

public void onCreate(...){
...
createObj = new CreateObj();
myList = new MyList();

currentObjList = MyList.getObjList();

//puts list into recycler
recyclerView = (RecyclerView) findViewById(R.id.recycler);
recyclerView.setLayoutManager(new LinearLayoutManager(this,
LinearLayoutManager.VERTICAL, false));

adapter = new RecyclerAdapter(this, currentObjList);
recyclerView.setAdapter(adapter);

...

aUserConfirmInputElement.setOnClickListener(new OnClickListener()){
public void onClick(){
Obj obj = createObj.create();
myList.addObjectToList(obj);

adapter.notifyDataSetChanged();
}
}

...
}

ответил(а) 2017-05-14T18:38:00+03:00 3 года, 1 месяц назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема