将自定义对象的列表传递给另一个活动android

我有一个List new ArrayList(); 我需要将此列表传递给另一个活动并从中检索对象以将其分配给String值。

News.java

  public class News { String title; String description; String thumbnail; String newsUrl; String body; String newsBigImage ; String newsComments ; String newsViews; String publishedDate; String articleGuid; String newsSourceId; String newsId ; String publisherName; String newsSourceTitle; String color; News(String title, String description, String thumbnail, String newsUrl, String body, String newsBigImage, String newsComments, String newsViews, String publishedDate, String articleGuid, String newsSourceId, String newsId , String publisherName, String newsSourceTitle ) { this.title = title; this.description = description; this.articleGuid =articleGuid; this.thumbnail = thumbnail; this.newsUrl = newsUrl; this.body = body; this.newsBigImage = newsBigImage; this.newsComments = newsComments; this.newsViews = newsViews; this.publishedDate = publishedDate; this.newsId = newsId; this.newsSourceId = newsSourceId; this.publisherName = publisherName; //this.color = color; this.newsSourceTitle =newsSourceTitle; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } public String getThumbnail() { return thumbnail; } public void setThumbnail(String thumbnail) { this.thumbnail = thumbnail; } public String getNewsUrl() { return newsUrl; } public void setNewsUrl(String newsUrl) { this.newsUrl = newsUrl; } public String getBody() { return body; } public void setBody(String body) { this.body = body; } public String getNewsBigImage() { return newsBigImage; } public void setNewsBigImage(String newsBigImage) { this.newsBigImage = newsBigImage; } public String getNewsComments() { return newsComments; } public void setNewsComments(String newsComments) { this.newsComments = newsComments; } public String getNewsViews() { return newsViews; } public void setNewsViews(String newsViews) { this.newsViews = newsViews; } public String getPublishedDate() { return publishedDate; } public void setPublishedDate(String publishedDate) { this.publishedDate = publishedDate; } public String getArticleGuid() { return articleGuid; } public void setArticleGuid(String articleGuid) { this.articleGuid = articleGuid; } public String getNewsSourceId() { return newsSourceId; } public void setNewsSourceId(String newsSourceId) { this.newsSourceId = newsSourceId; } public String getNewsId() { return newsId; } public void setNewsId(String newsId) { this.newsId = newsId; } public String getPublisherName() { return publisherName; } public void setPublisherName(String publisherName) { this.publisherName = publisherName; } public String getNewsSourceTitle() { return newsSourceTitle; } public void setNewsSourceTitle(String newsSourceTitle) { this.newsSourceTitle = newsSourceTitle; } public String getColor() { return color; } public void setColor(String color) { this.color = color; } } 

我传递的价值如下: –

 myNewsList.add(new News(title, description, thumbnail, newsUrl, body, newsBigImage, newsComments, newsViews, publishedDate, articleGuid, newsSourceId, newsId, publisherName, newsSourceTitle)); 

然后我将此列表传递给ListAdapter以在ListView中显示它。

  itemsAdapter = new LazyAdapter(myContext, myNewsList); newsList.setAdapter(itemsAdapter); 

现在,当用户单击listview项时,我想将myNewsList传递给新活动并从中检索项目并将其分配给该类中的另一个字符串。

 ewsList.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView arg0, View arg1, int position, long arg3) { // TODO Auto-generated method stub myDialog = new ProgressDialog(myContext).show(getActivity(), "Fetching news..", "Just a moment"); //News myMap = myNewsList.get(position); Intent newsIntent = new Intent(getActivity(),NewsDetails.class); startActivity(newsIntent); 

我怎样才能做到这一点??

实现一个parcelable接口,所以你的类看起来像

 public class News implements Parcelable { String title; String description; String thumbnail; String newsUrl; String body; String newsBigImage ; String newsComments ; String newsViews; String publishedDate; String articleGuid; String newsSourceId; String newsId ; String publisherName; String newsSourceTitle; String color; protected News(Parcel in) { title = in.readString(); description = in.readString(); thumbnail = in.readString(); newsUrl = in.readString(); body = in.readString(); newsBigImage = in.readString(); newsComments = in.readString(); newsViews = in.readString(); publishedDate = in.readString(); articleGuid = in.readString(); newsSourceId = in.readString(); newsId = in.readString(); publisherName = in.readString(); newsSourceTitle = in.readString(); color = in.readString(); } @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeString(title); dest.writeString(description); dest.writeString(thumbnail); dest.writeString(newsUrl); dest.writeString(body); dest.writeString(newsBigImage); dest.writeString(newsComments); dest.writeString(newsViews); dest.writeString(publishedDate); dest.writeString(articleGuid); dest.writeString(newsSourceId); dest.writeString(newsId); dest.writeString(publisherName); dest.writeString(newsSourceTitle); dest.writeString(color); } @SuppressWarnings("unused") public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { @Override public News createFromParcel(Parcel in) { return new News(in); } @Override public News[] newArray(int size) { return new News[size]; } }; 

}

你现在可以通过额外的意图传递这个

 intent.putExtra("newsObject", obj); 

并传递arraylist做Intent.putParcelableArrayListExtra("newsList", arr);

并在下一个活动得到像

 News news = (News)intent.getParcelableExtra("newsObject"); 

并获得arraylist做

 ArrayList news = (ArrayList)intent.getParcelableArrayListExtra("newsList"); 

Seriazable使用SeriazableParceable接口实现。

在NewsDetails类中,您只想显示描述,以便调用模型类的getters方法并在那里显示,或者按照上面的解决方案

首先,创建一个getter方法来在适配器中检索你的对象..返回你的List然后你在你的活动中调用你的getter,然后你创建你的意图。