我正在尝试将多维数组列表(例如:Arraylist>)从一个Java活动传递给另一个Java活动。我看过很多文章,并确定使用捆绑包是最好的方法(我也已经在其他地方使用捆绑包,所以我知道它们通常如何工作),但是我还没有看到2d arraylist的示例。

我已经尝试了以下方法,但是在意识到putStringArrayListExtra不接受2d arraylists之后并没有走很多:

private static ArrayList<ArrayList<String>> bigArrayList = new ArrayList<>();
static ArrayList<String> smallArrayList= new ArrayList<>();

Bundle b = new Bundle();
b.putStringArrayListExtra("2dArrayList", bigArrayList );
Intent i=new Intent(context, Class);
i.putExtras(b);

ArrayList<String> urls = getIntent().getStringArrayListExtra("2dArrayList");

只是在寻求有关如何在活动之间传递2d数组列表的帮助或建议。

分析解答

您可以为此使用Gson库,而无需实现可序列化。

假设您的arraylist是:

ArrayList<ArrayList<String>> bigArrayList= new ArrayList<>();

之后,您可以将其添加到意图中,如下所示:

Intent i = new Intent(Activity1.this, Activity2.class);
i.putExtra("data", new Gson().toJson(bigArrayList));

您可以稍后在Activity2中检索此内容,如下所示:

String extra = getIntent().getStringExtra("data");
ArrayList<ArrayList<String>> bigArrayList= new Gson().fromJson(extra, new TypeToken<ArrayList<ArrayList<String>>>(){}.getType());

这个对我有用!希望对您有帮助!