Как мне получить все выбранные мной элементы в другом активити (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 шт):
Как вариант - использовать отдельный класс где вы сможете засетить ваш список. Либо передавать так:
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);
}
};
}
вам нужно сделать что-то приблизительно такое же, но сложить в массив для передачи дальше.