Fragment构造中需要传入ArrayList<ArrayList<Strng>>,请问Bundle中如何存入?
光阴似箭催人老,日月如移越少年。
轉成json
bundle.putSerializable("key",lists);
@idisfkj 提到的方法簡單暴力. 另外還可以拆分傳遞參數, 傳入部分代碼如下:
public static final String ARG_TEST_PREFIX = "list."; public static TestFragment newIntance(ArrayList<ArrayList<String>> lists) { Bundle args = new Bundle(); if (lists != null) { int i = 0; for(ArrayList<String> list: lists) { args.putStringArrayList(ARG_TEST_PREFIX + (i++), list); } } TestFragment f = new TestFragment(); f.setArguments(args); return f; }
取得參數部分代碼如下:
@Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); ArrayList<ArrayList<String>> lists = new ArrayList<>(); Bundle args = getArguments(); for(int i = 0;; i++) { String key = ARG_TEST_PREFIX + i; if (!args.containsKey(key)) { break; } ArrayList<String> list = lists.getStringArrayList(key); lists.add(list); } }
p.s. String 和 ArrayList 都实现了Serializable接口, 但是Serializable序列化的性能是比较低的, ArrayList<ArrayList<String>> & ArrayList<String> & String 之間序列化的性能差異可以再討論下.
String
ArrayList
Serializable
ArrayList<ArrayList<String>>
ArrayList<String>
轉成json
bundle.putSerializable("key",lists);
@idisfkj 提到的方法簡單暴力. 另外還可以拆分傳遞參數, 傳入部分代碼如下:
取得參數部分代碼如下:
p.s.
String
和ArrayList
都实现了Serializable
接口, 但是Serializable
序列化的性能是比较低的,ArrayList<ArrayList<String>>
&ArrayList<String>
&String
之間序列化的性能差異可以再討論下.