J'ai une liste d'objet et je veux passer à travers l'intention. J'ai également implémenté Serializable mais l'application plante.Comment faire pour passer Liste de l'objet personnalisé en utilisant l'intention que je reçois erreur en utilisant Serializable
public class YoutubePlaylist implements Serializable{
@SerializedName("message")
@Expose
private String message;
@SerializedName("name")
@Expose
private String name;
@SerializedName("playlist_id")
@Expose
private String playlistId;
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPlaylistId() {
return playlistId;
}
public void setPlaylistId(String playlistId) {
this.playlistId = playlistId;
}}
L'erreur que je reçois est:
FATAL EXCEPTION: main
Process: com.osolutions.news24, PID: 28944
java.lang.RuntimeException: Parcel: unable to marshal value [email protected]
at android.os.Parcel.writeValue(Parcel.java:1418)
at android.os.Parcel.writeList(Parcel.java:759)
at android.os.Parcel.writeValue(Parcel.java:1365)
at android.os.Parcel.writeMapInternal(Parcel.java:662)
at android.os.Parcel.writeMap(Parcel.java:646)
Je passe comme ça dans la classe suivante:
public class YoutubeHorizontalPlaylistAdapter extends RecyclerView.Adapter<YoutubeHorizontalPlaylistAdapter.ViewHolder> {
private Context context;
private List<Item> itemList;
private ArrayList<YoutubePlaylist> body;
private HashMap<String, List<Item>> titleAndVideos;
public YoutubeHorizontalPlaylistAdapter(Context context,
List<Item> itemList ,List<YoutubePlaylist> body, HashMap<String, List<Item>> titleAndVideos) {
this.context = context;
this.itemList = itemList;
this.body = (ArrayList<YoutubePlaylist>) body;
this.titleAndVideos = titleAndVideos;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.single_episode_item, null);
return new ViewHolder(v);
}
@TargetApi(Build.VERSION_CODES.JELLY_BEAN)
@Override
public void onBindViewHolder(final ViewHolder holder, final int position) {
holder.episodeNameTxt.setText(itemList.get(position).getSnippet().getTitle());
String imagepath = itemList.get(position).getSnippet().getThumbnails().getHigh().getUrl();
UrlImageViewHelper.setUrlDrawable(holder.episodeImg, imagepath, R.drawable.placeholder_logo, 300000);
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (NetworkUtil.isOnline(context)) {
//
Bundle bundle = new Bundle();
bundle.putSerializable("title_body",body);
Intent i = new Intent(context, YoutubePlayListAdapter.class);
i.putExtra("hashmap", titleAndVideos);
i.putExtras(bundle);
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
context.startActivity(i);
} else {
CustomAlertDialogManager.noInternetDialog(context);
}
}
});
}
@Override
public int getItemCount() {
return itemList.size();
}
public static class ViewHolder extends RecyclerView.ViewHolder {
View v;
private TextView episodeNameTxt;
ImageView episodeImg;
public ViewHolder(View itemView) {
super(itemView);
episodeNameTxt = itemView.findViewById(R.id.episode_name);
episodeImg = itemView.findViewById(R.id.episode_img);
v = itemView;
}
}}
Note: Je suis le type coulée ArrayList dans le constructeur . S'il vous plaît, toute aide serait considérée.J'ai déjà essayé d'autres solutions de stackoverflow mais je n'ai pas pu trouver de solution.
Vous devez convertir votre classe de modèle à Parcelable classe –
j'ai essayé de le faire mais toujours la même erreur – bhaskar