如何将 List<String> 作为 Intent extra 传递?
How can I pass List<String> as an Intent extra?
我有一个列表,我想将其转换为一个字符串[],以便我可以将它作为一个额外的意图传递。
List<String> votedBy = parseObject.getList("votedBy");
意图逻辑:
Intent intent = new Intent(CommentActivity.this, UsersListActivity.class);
intent.putExtra(BundleConstants.KEY_LIST_TYPE, getString(R.string.voters));
intent.putExtra(BundleConstants.KEY_VOTERS_LIST, votedBy);
startActivity(intent);
我的第一个想法是将 List 的内容转换为 String[],但该列表是从数据库中检索的,其大小是先验未知的。我的一个建议是将 votedBy List 设为 Parcelable。我目前无法 运行 代码,所以我不确定这是否可行。我应该在这里做什么?
这用于使用来自一个 activity 的意图发送。
Intent intent = getIntent();
intent.putStringArrayListExtra("votedBy",new ArrayList<>(votedBy));
收到这个可以用;
ArrayList<String> votedByList= getIntent().getStringArrayListExtra("votedBy");
据我所知,List 不能作为 Intent extra 传递。
我建议传递从数据库中检索到的原始字符串,然后直接在新 activity (UserListActivity) 中解析它。
我想你应该试试
List<String> list = ..;
String[] array = list.toArray(new String[0]);
如 this question 中所建议。
如您所见,列表的大小对于转换来说从来都不是问题,您永远不需要知道它。
我有一个列表,我想将其转换为一个字符串[],以便我可以将它作为一个额外的意图传递。
List<String> votedBy = parseObject.getList("votedBy");
意图逻辑:
Intent intent = new Intent(CommentActivity.this, UsersListActivity.class);
intent.putExtra(BundleConstants.KEY_LIST_TYPE, getString(R.string.voters));
intent.putExtra(BundleConstants.KEY_VOTERS_LIST, votedBy);
startActivity(intent);
我的第一个想法是将 List 的内容转换为 String[],但该列表是从数据库中检索的,其大小是先验未知的。我的一个建议是将 votedBy List 设为 Parcelable。我目前无法 运行 代码,所以我不确定这是否可行。我应该在这里做什么?
这用于使用来自一个 activity 的意图发送。
Intent intent = getIntent();
intent.putStringArrayListExtra("votedBy",new ArrayList<>(votedBy));
收到这个可以用;
ArrayList<String> votedByList= getIntent().getStringArrayListExtra("votedBy");
据我所知,List 不能作为 Intent extra 传递。
我建议传递从数据库中检索到的原始字符串,然后直接在新 activity (UserListActivity) 中解析它。
我想你应该试试
List<String> list = ..;
String[] array = list.toArray(new String[0]);
如 this question 中所建议。
如您所见,列表的大小对于转换来说从来都不是问题,您永远不需要知道它。