如何将ArrayList
从一项活动传递到另一项活动?
答案 0 :(得分:41)
这取决于arraylist的类型
putIntegerArrayListExtra(String name, ArrayList<Integer> value)
putParcelableArrayListExtra(String name, ArrayList<? extends Parcelable> value)
putStringArrayListExtra(String name, ArrayList<String> value)
putCharSequenceArrayListExtra(String name, ArrayList<CharSequence> value)
然后,您可以通过将put
替换为get
并使用键字符串作为参数来阅读下一个活动,例如
myIntent.getStringArrayListExtra("arrayPeople");
答案 1 :(得分:3)
你可以在labeeb提供的bundle put parcelable array list中创建一个bundle,并设置为intent这里的代码是
Intent i = new Intent(this,name.class);
Bundle b = new Bundle();
b.putIntegerArrayListExtra(String name, ArrayList<Integer> value);
//b.putParcelableArrayListExtra(String name, ArrayList<? extends Parcelable> value);
//b.putStringArrayListExtra(String name, ArrayList<String> value);
i.putExtra(String name,b);
startActivity(i);
将数据导入另一项活动,如
//pseudo code
Bundle b = getIntent().getExtra().putParcelableArrayListExtra(String name);
答案 2 :(得分:0)
根据我的说法,创建静态类,并在从一个活动遍历到另一个活动时将数组列表放入其中。
当您到达另一个活动时,请访问您在静态类中存储的值。
<强>更新强>
我已经及时了解到这是一种可怕的做法。擦除/重新创建对象时,静态值可能会丢失。然后我们也在内存中放入了大量数据。使用像Parcelable这样的东西是一种很好的做法
答案 3 :(得分:0)
在撤销的活动中,您应该使用
Bundle bundle = getIntent().getExtras();
ArrayList<String> stringArray = bundle.getStringArrayList(ParentActivity.STRING_LIST);
其中ParentActivity.STRING_LIST
是列表的关键常量。
答案 4 :(得分:-2)
创建意图时。你可以通过
设置数据intent.putExtra("keyName", "somevalue");
当意图B开始时,您可以通过
获取数据Bundle extras = getIntent().getExtras();
if(extras !=null)
{
String value = extras.getString("keyName");
}