如何将自定义类型的数组从一个活动传递到另一个活动?

时间:2013-01-30 12:21:31

标签: java android android-intent

  

这是我如何传递自定义数据类型的项目**项目[]   itemsArr ** to intent

Intent pruchadeDetails = new Intent(getApplicationContext(),PurchaseHistoryDetails.class);
pruchadeDetails.putExtra("item",itemsArr[position].getShoppingItems());
startActivityForResult(pruchadeDetails, 0);
  

无法使用这两种方法检索它

Item[] itemArr = (Item[])getIntent().getSerializableExtra("item"); //method 1
String json = pruchadeDetails.getStringExtra("item");//method 2
  

非常感谢任何帮助

6 个答案:

答案 0 :(得分:1)

希望此代码可以帮助您。

    intent.putCharSequenceArrayListExtra("ListName", ArrayList)
    Intent purchaseDetails= new Intent(getApplicationContext(), PurchaseHistoryDetails.class);
    purchaseDetails.putCharSequenceArrayListExtra("items", yourArrayList);
    startActivityForResult(purchaseDetails,0);

传递自定义数据类型的数组列表。

答案 1 :(得分:1)

试试此代码

 intent.putCharSequenceArrayListExtra("ArrayListName", ArrayList)
Intent purchaseDetails= new Intent(getApplicationContext(), this.class);
purchaseDetails.putCharSequenceArrayListExtra("items", ArrayList);
startActivityForResult(purchaseDetails,0);

答案 2 :(得分:0)

使您的自定义项可分区,然后将数组作为Parcelable数组放入Bundle中,以将其传递给活动。

答案 3 :(得分:0)

你需要看看这个

http://developer.android.com/reference/android/os/Parcelable.html

让你的模型Parcelable。链接中给出了一个例子。

答案 4 :(得分:0)

如果你想在内存中这样做,我会想到三个解决方案:

  1. 按照@takecare所述,使您的数据 parcelable 。另请参阅http://developer.android.com/reference/android/os/Parcelable.html
  2. 使用JSON序列化您的数据。例如,参见http://developer.android.com/reference/org/json/JSONTokener.html
  3. 使用单例类作为数据的持有者。您还可以使用应用程序对象。例如,参见Singletons vs. Application Context in Android?

答案 5 :(得分:0)

对于下面的第一项活动。

List<String> itemList = new ArrayList();
for(int i=0;i<5;i++){
itemList.add("i'th List"+i);
}

Intent intent= new Intent(this,ReportsActivity.class);
intent.putStringArrayListExtra("items", (ArrayList<String>) itemList);
startActivity(intent);

使用

将此数组转换为另一个活动
Bundle bundle = getIntent().getExtras();
    List<String> itemList= bundle.getStringArrayList("items");

    for(int i=0;i<itemList.size();i++){
       Log.i("TAG", itemList.get(i));       
    }