Да, это возможно, прежде всего вам нужно реализовать метод для добавления элемента в ваш адаптер, скажем, void addItem(Movie movie);
Затем вам необходимо вернуть данные из предыдущего занятия.
Там у вас есть несколько решений. Самый очевидный из приведенных вами кодов - сделать ваш Movie
класс Parcelable
. Когда ваш фильм будет расширен до Parcelable
, я просто дам вам эту ссылку, так как я не лучший человек, чтобы объяснить вам Parcelables: /) вы сможете связать его с вашим activity
.
Итак, у вас есть ваш адаптер в первом упражнении (мы назовем его MainActivity
), и вы хотите добавить Movie
из второго занятия (назовем его SecondActivity
)
Что вам нужно сделать, это открыть свой SecondActivity
«для результата», что означает, что вы ожидаете результата от этого действия.
Как только вы введете в SecondActivity
любую логику, вам понадобится новый Movie
для добавления и возврата его в MainActivity
, добавив его в ваш результат.
Вот ссылка о действиях и результатах
Ваш окончательный код будет выглядеть примерно так
MainActivity
public static String MOVIE_REQUEST = "movie_request";
@Override
protected void onCreate(Bundle savedInstance){
...
previous logic
...
recyclerView.setAdapter(mAdapter);
...
rest of the logic of your activity
...
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == MOVIE_REQUEST) {
// Make sure the request was successful
if (resultCode == RESULT_OK) {
Movie movie = (Movie)data.getParcelableExtra(SecondActivity.MOVIE_EXTRA);
mAdapter.addItem(movie);
}
}
}
Адаптер
public void addItem(Movie movie){
movieList.add(movie);
//Your code should be way better than this anwser btw) notifyDatasetChanged isn't the best way to proceed
notifyDatasetChanged();
}
SecondActivity
public static final String MOVIE_EXTRA = "movie_extra";
private void sendMovie(Movie movie){
Intent data = new Intent();
data.putExtra(MOVIE_EXTRA, movie);
//At this point you're returning your result to your first activity
setResult(RESULT_OK, data);
}
И все готово, вы должны были получить новый фильм со второго занятия
С уважением,
Матье