当前位置: 代码迷 >> Android >> 关于用Intent传递List<>类型的有关问题
  详细解决方案

关于用Intent传递List<>类型的有关问题

热度:17   发布时间:2016-05-01 21:38:00.0
求助:关于用Intent传递List<>类型的问题


public class Music implements Serializable {
private static final long serialVersionUID = -7060210544600464481L;

int musicId;
String musicName;
String musicPath;


public int getMusicId() {
return musicId;
}
public void setMusicId(int musicId) {
this.musicId = musicId;
}
public String getMusicName() {
return musicName;
}
public void setMusicName(String musicName) {
this.musicName = musicName;
}
public String getMusicPath() {
return musicPath;
}
public void setMusicPath(String musicPath) {
this.musicPath = musicPath;
}

}






public void searchMusci(File file) {
musicList = new ArrayList<Music>();
File[] files = file.listFiles();
for(int i=0; i<files.length; i++) {
if(files[i].isDirectory()) {
searchMusci(files[i]);
}else if(files[i].getName().endsWith(".mp3")){
music = new Music();
music.setMusicId(i);
music.setMusicName(files[i].getName());
music.setMusicPath(files[i].getAbsolutePath());
musicList.add(music);
}

}

musicList = Collections.synchronizedList(new ArrayList<Music>());//把List类型强转型
Intent intent = new Intent("android.music.MusicService_Action");
intent.putExtras(1, musicList);
}
上面的Music.class已经实现Synchronize接口,但是最后一行intent.putExtra(1, musicList)提示错误,这是为什么呢?有个参考文章链接http://www.eoeandroid.com/forum.php?mod=viewthread&tid=81308 希望大神们指点下

------解决方案--------------------
我知道了,看了下里面的源码
synchronizedList里面返回的是一个SynchronizedRandomAccessList

SynchronizedRandomAccessList继承自SynchronizedList

SynchronizedList里面继承自SynchronizedCollection

然后里面有两个对象,Collection和Object,object好像木有实现Serializable。Collection实际上就是你的那个arraylist。

这么一说,我又看了下普通的arraylist里面有神马,有一个object,但是transient属性的,序列化的时候为不可见。so,jdk的问题。。。。 Collections.synchronizedList这个方法不应该调用
------解决方案--------------------
直接static吧
  相关解决方案