Как мне получить все выбранные мной элементы в другом активити (RecyclerView)?

у меня есть метод, где я перебираю свой List

public void onClickYes(View view) {
    display.setText(worldList.get(i));
    progress.setText(counter + "");
    wordItems.add(new RecyclerItems(worldList.get(i)));
    builderAdapter();
    if (i < worldList.size()) {
        i++;
        counter++;
    }
    else {
        Toast.makeText(this, "Слова закончились", Toast.LENGTH_SHORT).show();
        i = 0;
    }
}

А тут я пытаюсь передавать значение в новом активити

            case R.id.yes:
                wordItems.add(new RecyclerItems(worldList.addAll()));
                intent = new Intent(MainActivity.this, YesActivity.class);
                intent.putExtra("key", worldList.size());
                startActivity(intent);
                break;

Я хочу заполнить мой recyclerView в другом активити заполнить всеми выбранными элементами, но у меня так сделать не получается и выводит только один элемент. Пожалуйста, помогите.


Ответы (1 шт):

Автор решения: Andrew

Как вариант - использовать отдельный класс где вы сможете засетить ваш список. Либо передавать так:

intent.putParcelableArrayListExtra("key", ArrayList<T extends Parcelable> list);
startActivity(intent);

и получить так:

getIntent().getParcelableArrayListExtra("key");

Вот есть подобное обсуждение на enSo. Вам нужно учитывать что ваш класс-модель должен реализовывать (implementation) Parcelable. Про независимый класс можно почитать тутВот есть туториал по передаче объекта между активностями, и вот из него пример класса который передается:

public class MyObjects implements Parcelable {
    
    private int age;
    private String name;
    
    private ArrayList<String> address;
    
    public MyObjects(String name, int age, ArrayList<String> address) {
        this.name = name;
        this.age = age;
        this.address = address;
    
    }
    
    public MyObjects(Parcel source) {
        age = source.readInt();
        name = source.readString();
        address = source.createStringArrayList();
    }
    
    @Override
    public int describeContents() {
        return 0;
    }
    
    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeInt(age);
        dest.writeString(name);
        dest.writeStringList(address);
    }
    
    public int getAge() {
        return age;
    }
    
    public String getName() {
        return name;
    }
    
    public ArrayList<String> getAddress() {
        if (!(address == null))
            return address;
        else
            return new ArrayList<String>();
    }
    
    public static final Creator<MyObjects> CREATOR = new Creator<MyObjects>() {
        @Override
        public MyObjects[] newArray(int size) {
            return new MyObjects[size];
        }
    
        @Override
        public MyObjects createFromParcel(Parcel source) {
            return new MyObjects(source);
        }
    };
}

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

→ Ссылка