我正在尝试将此ArrayList传递给另一个活动。 到目前为止,我的努力都失败了。 我知道我不理解如何正确传递它。
这是我的arrayList代码:
public static ArrayList<Movie> getMovieItems() {
if(mItems == null) {
mItems = new ArrayList<>();
Movie movie1 = new Movie();
movie1.setId(1);
movie1.setTitle("Title1");
movie1.setStudio("studio1");
movie1.setDescription("description1");
movie1.setCardImageUrl("http://3.bp.blogspot.com/-ZKjKucsPdzI/TudWC99CE_I/AAAAAAAAAD8/qvWdDtw5IW0/s1600/%2528393%2529.jpg");
//movie1.setVideoUrl("http://corochann.com/wp-content/uploads/2015/07/MVI_0949.mp4");
/* Google sample app's movie */
//movie1.setVideoUrl("http://www.youtube.com/embed/VopbGPJVkzM");
//movie1.setVideoUrl("http://live.gph.gov.sa/makkahlive/");
//movie1.setVideoUrl("http//livestreaming2.itworkscdn.net/squranlive/squran_7200p");
/// --- try this
//String url = "http://www.youtube.com/embed/VopbGPJVkzM";
//movie1.setVideoUrl("http://commondatastorage.googleapis.com/android-tv/Sample%20videos/Demo%20Slam/Google%20Demo%20Slam_%2020ft%20Search.mp4");
movie1.setVideoUrl("http//livestreaming2.itworkscdn.net/squranlive/squran_360p");
mItems.add(movie1);
Movie movie2 = new Movie();
movie2.setId(2);
movie2.setTitle("Title2");
movie2.setStudio("studio2");
movie2.setDescription("description2");
movie2.setCardImageUrl("http://www.questionsonislam.com/sites/default/files/mescid-i-nebevi.jpg");
//movie2.setVideoUrl("http://corochann.com/wp-content/uploads/2015/07/MVI_0962.mp4");
/* Google sample app's movie */
movie2.setVideoUrl("http://www.youtube.com/embed/4OoKpZWJASY");
mItems.add(movie2);
Movie movie3 = new Movie();
movie3.setId(3);
movie3.setTitle("Title3");
movie3.setStudio("studio3");
movie3.setDescription("description3");
movie3.setCardImageUrl("http://2.bp.blogspot.com/-ju9FXyjDFqI/TgY7uVabgxI/AAAAAAAAADw/-qSdxfyHosM/s1600/masjid+qiblatain+%25283%2529.gif");
//movie3.setVideoUrl("http://corochann.com/wp-content/uploads/2015/07/MVI_1112.mp4");
movie3.setVideoUrl("http://www.youtube.com/embed/4OoKpZWJASY");
mItems.add(movie3);
}
return mItems;
}
mItems是我想传递给另一个活动的ArrayList。 我试过这个“模板”
ArrayList<Movie> chanList= new ArrayList<>();
然后我意识到我没有正确的。
有人可以通过一些洞察力帮助我,并帮助我理解如何正确地做到这一点吗?
谢谢!
ironmantis7x
答案 0 :(得分:2)
您必须使用if( exists $opt{suppress}{E} )
类实现Parcelable
或Serializable
才能通过使用意图的活动传递它。
编辑:您的班级实施sub listopt_to_hash {
my($name, $val) = @_;
$opt{$name}{$val} = 1;
return;
}
GetOptions(
'verbose' => \$opt{verbose},
'suppress:s{1,}' => \&listopt_to_hash
);
的一个例子:
Movie
执行此操作后,您可以查看this question,此this tutorial和this one,以获取更多信息。
TL; DR:你必须在发件人活动上使用Intent#putParcelableArrayListExtra
,在第二个活动上使用Intent#getParcelableArrayListExtra
。
答案 1 :(得分:1)
第一步是让你的模型 Parcelable ,check here for instructions.
接下来是将你的数组列表放在意图中。
Intent intent = new Intent(this, YourNextActivity.class);
intent.putParcelableArrayListExtra("some string identifier", yourArrayList);
startActivity(intent)
然后在下一个活动中,使用以下方法获取数组列表:
ArrayList<Movie> chanList = getIntent().getParcelableExtra("some string identifier");
答案 2 :(得分:1)
你需要让你的电影类Parcelable。如果您的电影类是POJO,您可以使用http://www.parcelabler.com/
轻松完成然后你可以直接把它放在意图中并通过它:
Intent intent = new Intent(this, NextActivity.class);
intent.putParcelableArrayListExtra("key_string", movieArrayList);
startActivity(intent);
答案 3 :(得分:0)
您可以使用Sharedprefrence存储列表
SharedPreferences sharedPreferences =context.getSharedPreferences("MyPrefrence", 0);
SharedPreferences.Editor editor = sharedPreferences.edit();
String movie_data = gson.toJson(mItems);
editor.putString("MovieDatas", task_data);
editor.commit()
和访问
SharedPreferences sharedPreferences = context.getSharedPreferences("MyPrefrence", 0);
String json=sharedPreferences.getString("MovieDatas","");
Type type=new TypeToken<ArrayList<Movie>>(){}.getType();
mItems = new ArrayList<Movie>();
mItems=New Gson().fromjson(json,type);
答案 4 :(得分:0)
您可以以相同的方式传递ArrayList,
您可以调用Intent的putExtra(String name,Serializable值)来存储,并使用getSerializableExtra(String name)进行检索。
示例:
ArrayList<String> myList = new ArrayList<String>();
intent.putExtra("mylist", myList);
在另一项活动中:
ArrayList<String> myList = (ArrayList<String>)getIntent().getSerializableExtra("mylist");
答案 5 :(得分:0)
对于这个解决方案,我所做的是: 我写了一个类文件来拉取流的youTubeID。 然后我将流的YouTubeID作为我放入ArrayList的变量。现在我可以选择流的yoyTubeID作为变量,现在一切正常!