java - 如何从 Intent 遍历自定义对象的 ArrayList 并将它们添加到 LinearLayout?
问题描述
我在意图中有一个自定义 FlightData 对象的 ArrayList。我加载意图并将arraylist 设为null,并且foreach 循环也强制我Object
用作类型。
将arraylist保存到意图中:
intent.putParcelableArrayListExtra("FlightDataList", (ArrayList<? extends Parcelable>) flightDataList);
加载意图:
Intent intent = getIntent();
LinearLayout layout_datasheet = findViewById(R.id.layout_datasheet);
List flightDataList = intent.getParcelableArrayListExtra("FlightDataList");
if (flightDataList == null){
Log.d("flightDataList_size", "FlightDataList is null"); // this fires
}
assert flightDataList != null;
for (Object data : flightDataList){
data = (FlightData) data; // items in list are of type FlightData
TextView tv = new TextView(this);
tv.setText(data.toString());
layout_datasheet.addView(tv);
}
我的自定义类的可打包函数(x,y,时间,有 getters-setters):
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeDouble(x);
dest.writeDouble(y);
dest.writeDouble(time);
}
public static final Creator<FlightData> CREATOR = new Creator<FlightData>() {
@Override
public FlightData createFromParcel(Parcel in) {
return new FlightData(in);
}
@Override
public FlightData[] newArray(int size) {
return new FlightData[size];
}
};
解决方案
1.首先在你的FlightData对象模型/pojo/class中实现Parceable
2.val flightDataList= ArrayList<FlightData>()
3.val args = Bundle()
4.args.putParcelableArrayList("FlightDataList", flightDataList)
5.intent.putExtra(args)
然后获取列表
val flightDataList = context.getIntent().getExtras().getParcelableArrayList("FlightDataList")
推荐阅读
- angular - 无法将类属性添加到 Angular 7 中的 DOM 元素
- sql-server - 将计数值分组
- reactjs - 用ant-design在react js中提交后清除表单输入字段值
- python - 在 Python 中从列表中检索浮点值
- amazon-web-services - 如何在 Amazon Linux 2 AMI 中安装 GUI(桌面)
- json - 在文本输入中加载 json 对象会降低页面性能吗
- android - 磁盘或 USB 或 SD 存储
- node.js - nodejs中是否有任何功能可以根据月、日、年或在.xls格式的选定日期之间生成语句?
- javascript - 如何访问天气下括号内的数据?
- javascript - Javascript 回调函数未按预期执行