当你在做项目的时候,也许会碰到需要把一个数组集合传回上一个界面来使用,也可能会把数组集合传入到下一个界面。不管何种方法一下办法都适用,做适当改动即可。
例如
在电商项目中,选中任意数量商品 把商品数据传回上个页面。
ActivityA -> ActivityB -> ActivityA
这个时候解决思路如下:
1、创建一个临时集合JavaBean,然后对原来商品列进行循环,来找出被选中的商品将其放入刚刚创建的集合中。
2、再通过Gson把JavaBean转化为json字符串。
3、把数据通过Intent传回上一个Activity
一下为示例代码:
ActivityB:
List<SellGoodsList> list;
//按钮点击事件:回传数组对象
btn_save.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//创建临时的List,用于存储被选中的商品
List<SellGoodsList> tempGoods = new ArrayList<>();
//循环list找出被选中的商品
for (int i = 0;i<list.size();i++){
SellGoodsList goods = list.get(i);
boolean isSelect = goods.isSelect();
if (isSelect){
tempGoods.add(goods);
}
}
//通过Gson方法,把tempGoods集合转为json字符串
Gson gson =new GsonBuilder().create();
String datas = gson.toJson(tempGoods);
//传回上个页面
Intent intent = new Intent();
intent.putExtra("datas",datas);
SellGoodsActivity.this.setResult(3,intent);
finish();
}
});
ActivityA:
List<SellGoodsList> jsonObject;
private void initData2(String datas) {
//fromJson方法,将一个Json数据转换为对象。
Type type = new TypeToken<List<SellGoodsList>>() {}.getType();
jsonObject = new Gson().fromJson(datas, type);
//也可以写成这样:jsonObject = new Gson().fromJson(json, new TypeToken<List<SellGoodsList>>(){}.getType());
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case 3:
//接受数组对象
String datas = data.getStringExtra("datas");
initData2(datas);
break;
default:
break;
}
}
传回来后,通过fromJson方法,将一个Json数据转换为对象,这样一个完整的数组集合和里面的数据就被传回来了