Pass ArrayList to Activity
Я искал несколько тем, но не нашел решения моей проблемы.
public class Series implements Parcelable { private String name; private int numOfSeason; private int numOfEpisode; /** Constructors and Getters/Setters have been removed to make reading easier **/ public Series(Parcel in) { String[] data = new String[3]; in.readStringArray(data); this.name = data[0]; this.numOfSeason = Integer.parseInt(data[1]); this.numOfEpisode = Integer.parseInt(data[2]); } @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeStringArray(new String[] { this.name, String.valueOf(this.numOfSeason), String.valueOf(this.numOfEpisode) }); } private void readFromParcel(Parcel in) { name = in.readString(); numOfSeason = in.readInt(); numOfEpisode = in.readInt(); } public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { @Override public Series createFromParcel(Parcel in) { return new Series(in); } @Override public Series[] newArray(int size) { return new Series[size]; } };
}
В моей MainActivity у меня есть ArrayList. Чтобы сделать список динамически редактируемым, мне нужно передать его другому действию, где я могу его редактировать.
- На каких телефонах Android есть гироскоп?
- Горизонтальная вкладка «и»
- Запуск кода в основном streamе из другого streamа
- Как я могу проверить fragmentы с помощью Robolectric?
- Android: notifyDataSetChanged (); не работает
ArrayList listOfSeries = new ArrayList(); public void openAddActivity() { Intent intent = new Intent(this, AddActivity.class); intent.putParcelableArrayListExtra( "com.example.episodetracker.listofseries", (ArrayList) listOfSeries); startActivity(intent); }
Мне нужно отобразить список, иначе Eclipse предоставит мне следующее сообщение об ошибке. Метод putParcelableArrayListExtra (String, ArrayList) в типе Intent не применим для аргументов (String, List)
Это правильный способ сделать это?
ArrayList list = savedInstanceState .getParcelableArrayList("com.example.episodetracker.listofseries");
Именно так я пытаюсь прочитать данные в другой деятельности.
Он падает на линию выше. а именно: getParcelableArrayList.
- как отображать изображения, сохраненные в папке sdcard в android
- Как заблокировать вызов мобильного номера и получение сообщений в разработке приложений Android?
- Обновление Android TextView в streamе и Runnable
- Android - динамически добавлять виды в представление
- Ошибка раздувания classа android.support.v7.widget.Toolbar?
- Как добавить внешние библиотеки jar в проект android из командной строки
- MediaPlayer.setDataSource вызывает IOException для действительного файла
- Выровнять текст вокруг вертикальной оси ImageSpan
-
Проблема заключается в том, чтобы написать парцеллу и прочитать ее с посылки …
@Override public void writeToParcel(Parcel dest, int flags) { dest.writeString(name); dest.writeInt(numOfSeason); dest.writeInt(numOfEpisode); } private void readFromParcel(Parcel in) { name = in.readString(); numOfSeason = in.readInt(); numOfEpisode = in.readInt(); }
-
То, что вы выписываете, должно соответствовать тому, что вы читаете …
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Intent i = new Intent(this,SecondActivity.class); ArrayList
testing = new ArrayList (); i.putParcelableArrayListExtra("extraextra", testing); startActivity(i); } /**********************************************/ public class SecondActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ArrayList testing = this.getIntent().getParcelableArrayListExtra("extraextra"); } } -
Вышеприведенный код имеет onCreate () из двух разных действий. Первый запускает второй; и он отлично работает, я смог вытащить аргумент без проблем.
Вы должны использовать метод putParcelableArrayListExtra()
в classе Intent
.
Я использовал putParcelableArrayList()
из объекта Bundle
. Не прямо из объекта Intent Object (я не знаю, в чем разница). но я использую так:
ArrayList resultSet = new ArrayList (); resultSet = loadData(); Bundle data = new Bundle(); data.putParcelableArrayList("search.resultSet", resultSet); yourIntent.putExtra("result.content", data); startActivity(yourIntent);
Позже в новом действии вы можете заполнить данные, недавно вставленные в объект Bundle, следующим образом:
Bundle data = this.getIntent().getBundleExtra("result.content"); ArrayList result = data.getParcelableArrayList("search.resultset");
Просто помните, что ваш ArrayList<>
должен содержать только интересные объекты. и просто чтобы убедиться, что вы передали данные, которые вы можете проверить, являются ли полученные данные нулевыми или нет, просто чтобы избежать проблем.
Может быть, это помогает кому-то. Еще моя проблема заключалась в том, что я использовал write и readValue, но он должен соответствовать типу, например writeInt, readInt writeString, readString и т. Д.