Java 如何从Intent遍历自定义对象的ArrayList并将其添加到LinearLayout中?
我在intent中有一个自定义FlightData对象的ArrayList。我加载intent并将arraylist设置为null,foreach循环还强制我使用Java 如何从Intent遍历自定义对象的ArrayList并将其添加到LinearLayout中?,java,android,Java,Android,我在intent中有一个自定义FlightData对象的ArrayList。我加载intent并将arraylist设置为null,foreach循环还强制我使用Object作为类型 正在将arraylist保存到intent中: intent.putParcelableArrayListExtra(“FlightDataList”),ArrayList1。首先在FlightData对象模型/pojo/class中实现Parcelable 2.val flightDataList=ArrayLi
Object
作为类型
正在将arraylist保存到intent中:
intent.putParcelableArrayListExtra(“FlightDataList”),ArrayList1。首先在FlightData对象模型/pojo/class中实现Parcelable
2.val flightDataList=ArrayList()
3.val args=Bundle()
4.args.putParcelableArrayList(“FlightDataList”,FlightDataList)
5.intent.putExtra(args)
然后去拿清单
val flightDataList=context.getIntent().getExtras().getParcelableArrayList(“flightDataList”)
我怀疑您是否在FlightData中实现了Parcable
您是否尝试创建实现parcelable的数据结构
public class flightDataList implements Parcelable{
String dataThingyString;
int dataThingyInt;
public flightDataList(String dataThingyString, int dataThingyInt){
this.dataThingyString = dataThingyString;
this.dataThingyInt = dataThingyInt;
}
public flightDataList(Parcle in){
this.dataThingyString = in.readString();
this.dataThingyInt = in.readInt();
}
@Override
public void writeToParcel(Parcel dest, int flags){
dest.writeString(dataThingyString);
dest.writeInt(dataThingyInt);
}
public static final Creator<flightDataList> CREATOR = new Creator<flightDataList>(){
@Override
public flightDataList createFromParcel(Parcel source){
return new flightDataList(source);
}
@Override
public flightDataList[] newArray(int size){
return new flightDataList[size];
}
}
public void setdataThingyString(String stringData){
this.dataThingyString = stringData;
}
public void setdataThingyInt(int intData){
this.dataThingyInt = intData;
}
public String getdataThingyString(){
return dataThingyString;
}
public int getdataThingyInt(){
return dataThingyInt;
}
@Override
public int describeContents(){
return 0;
}
}
public类flightDataList实现可包裹{
字符串dataThingyString;
int dataThingyInt;
public-flightDataList(字符串dataThingyString,int-dataThingyInt){
this.dataThingyString=dataThingyString;
this.dataThingyInt=dataThingyInt;
}
公共航班数据列表(包裹中){
this.dataThingyString=in.readString();
this.dataThingyInt=in.readInt();
}
@凌驾
公共无效写入包裹(包裹目的地,内部标志){
目的写入字符串(dataThingyString);
目的写入(数据内容输入);
}
公共静态最终创建者=新创建者(){
@凌驾
public flightDataList createFromParcel(地块源){
返回新的flightDataList(源);
}
@凌驾
公共flightDataList[]新数组(整数大小){
返回新的flightDataList[大小];
}
}
公共void setdataThingyString(字符串stringData){
this.dataThingyString=stringData;
}
public void setdataThingyInt(int-int-data){
this.dataThingyInt=intData;
}
公共字符串getdataThingyString(){
返回dataThingyString;
}
public int getdataThingyInt(){
返回数据thingyint;
}
@凌驾
公共int描述内容(){
返回0;
}
}
它应该可以工作。在您的示例中,我唯一缺少的是构造函数。它可以解释您得到的null
尝试为FlightData
public FlightData(Parcel in) {
x = in.readDouble();
y = in.readDouble();
time = in.readDouble();
}
您的arraylist中包含哪些数据?即:仅字符串、字符串和整数、字符串整数和其他包裹?您是否为flightDataList数据结构创建了一个包裹类?3倍,更新了关于包裹实现的问题。IDE在运行前、我启动应用程序和切换activi后没有显示错误如果directputParcelableArrayListExtra
不起作用,这是另一种方法。我将列表放入捆绑包,捆绑包放入意图。捆绑包最后不是空的,但arraylist仍然是空的。将其放入我可以在同一个函数(和活动)中使用getParcelableArrayList(“FlightDataList”)
获得它的捆绑包我把它放进去了。但在另一个活动中它是空的。更新的问题。你能告诉我我把它搞砸了吗?这都是由IDE自动生成的。正如你所看到的,它有3个双精度。下面Burhan Khanzada建议在意图中使用一个包…环顾四周,这似乎是一个相当标准的方法…你可能还想检查在你开始新的活动之前,我会看到你的意图已经被设定好,并且意图已经被发送出去了。