gpt4 book ai didi

java - 将带有自定义对象的列表传递给另一个 Activity android

转载 作者:搜寻专家 更新时间:2023-11-01 07:59:25 25 4
gpt4 key购买 nike

我有一个 List<News> new ArrayList<News>();我需要将此列表传递给另一个 Activity 并从中检索对象以将其分配给字符串值。

新闻.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到新 Activity 并从中检索项目并将其分配给该类中的另一个字符串。

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);

我该怎么做?

最佳答案

实现一个可打包的接口(interface),所以你的类看起来像

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<News> CREATOR = new Parcelable.Creator<News>() {
@Override
public News createFromParcel(Parcel in) {
return new News(in);
}

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

现在你可以传递 this in intent extra like

intent.putExtra("newsObject", obj);

并为传递数组列表执行 Intent.putParcelableArrayListExtra("newsList", arr);

然后在下一个 Activity 中点赞

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

为了获取 arraylist 做

ArrayList<News> news = (ArrayList<News>)intent.getParcelableArrayListExtra("newsList"); 

关于java - 将带有自定义对象的列表传递给另一个 Activity android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23333429/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com