2016-09-24 1 views
-2

Я пытаюсь изучить parcelable. Раньше я использовал функцию get и set, но теперь я использую parcelable для передачи объекта другому классу, который я сделал классом passdata, и реализовал его, но я могу добавить список объекту класса.Как слагаемый объект

class Passdata implements Parcelable { 
private String title,album; 
private long duration; 
private Uri data,album_art; 

public String getTitle() { 
    return title; 
} 

void setTitle(String title) { 
    this.title = title; 
} 

public String getAlbum() { 
    return album; 
} 

void setAlbum(String album) { 
    this.album = album; 
} 

public long getDuration() { 
    return duration; 
} 

void setDuration(long duration) { 
    this.duration = duration; 
} 

public Uri getData() { 
    return data; 
} 

void setData(Uri data) { 
    this.data = data; 
} 

public Uri getAlbum_art() { 
    return album_art; 
} 

void setAlbum_art(Uri album_art) { 
    this.album_art = album_art; 
} 

Passdata(Parcel in) { 
    title = in.readString(); 
    album = in.readString(); 
    duration = in.readLong(); 
    data = in.readParcelable(Uri.class.getClassLoader()); 
    album_art = in.readParcelable(Uri.class.getClassLoader()); 
} 

@Override 
public void writeToParcel(Parcel dest, int flags) { 
    dest.writeString(title); 
    dest.writeString(album); 
    dest.writeLong(duration); 
    dest.writeParcelable(data, flags); 
    dest.writeParcelable(album_art, flags); 
} 

@Override 
public int describeContents() { 
    return 0; 
} 

public static final Creator<Passdata> CREATOR = new Creator<Passdata>() { 
    @Override 
    public Passdata createFromParcel(Parcel in) { 
     return new Passdata(in); 
    } 

    @Override 
    public Passdata[] newArray(int size) { 
     return new Passdata[size]; 
    } 
}; 
} 

, как я могу добавить объект как этих

do { 
        int audioTitle = audioCursor.getColumnIndexOrThrow(MediaStore.Audio.Media.TITLE); 
        int audioartist = audioCursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ARTIST); 
        int audioduration = audioCursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DURATION); 
        int audiodata = audioCursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DATA); 
        int audioalbum = audioCursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ALBUM); 
        int audioalbumid = audioCursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ALBUM_ID); 
        Passdata info = new Passdata(); 
        info.setData(Uri.parse(audioCursor.getString(audiodata))); 
        info.setTitle(audioCursor.getString(audioTitle)); 
        info.setDuration(audioCursor.getLong(audioduration)); 
        // info.setArtist(audioCursor.getString(audioartist)); 
        info.setAlbum(audioCursor.getString(audioalbum)); 
        info.setAlbum_art(ContentUris.withAppendedId(albumArtUri, audioCursor.getLong(audioalbumid))); 
        audioList.add(info); 
       } 

я получаю ошибки в месте был я создаю PassData объекта , как это исправить ??

+1

Мы не можем видеть ваш экран «Я получаю ошибку», какая ошибка ??? –

+0

он показывает данные пропуск не может быть применен – SAVVY

+0

AURO parcelable Plugin поиска в андроиде плагин студии для этого https://github.com/mcharmas/android-parcelable-intellij-plugin – amorenew

ответ

1

У вас нет пустого конструктора в классе PassData. Добавьте этот код:

public Passdata() { 

} 
+0

отдых все в порядке ?? или я ошибаюсь – SAVVY