如何将ArrayList放入bundle中

时间:2017-02-24 10:15:31

标签: java android arraylist

我已经为这样的arraylist增加了一些价值:

    private List<InfoProduct> product;

    product = new ArrayList<>();
    product.add(new InfoProduct(R.drawable.cloth, Product_title, "0", Product_data2, lunch,R.drawable.cardview_circle_corner));
    product.add(new InfoProduct(R.drawable.guitar, Product_title, "1", Product_data2, lunch,R.drawable.cardview_circle_corner));
    product.add(new InfoProduct(R.drawable.cloth, Product_title, "2", Product_data2, lunch,R.drawable.cardview_circle_corner));
    product.add(new InfoProduct(R.drawable.guitar, Product_title, "3", Product_data2, lunch,R.drawable.cardview_circle_corner));
    product.add(new InfoProduct(R.drawable.cloth, Product_title, "4", Product_data2, lunch,R.drawable.cardview_circle_corner));
    product.add(new InfoProduct(R.drawable.guitar, Product_title, "5", Product_data2, lunch,R.drawable.cardview_circle_corner));
    product.add(new InfoProduct(R.drawable.cloth, Product_title, "6", Product_data2, lunch,R.drawable.cardview_circle_corner));
    product.add(new InfoProduct(R.drawable.guitar, Product_title, "7", Product_data2, lunch,R.drawable.cardview_circle_corner));
    product.add(new InfoProduct(R.drawable.cloth, Product_title, "8", Product_data2, lunch,R.drawable.cardview_circle_corner));
    product.add(new InfoProduct(R.drawable.guitar, Product_title, "9", Product_data2, lunch,R.drawable.cardview_circle_corner));

当我需要去其他片段时,我想使用Bundle来传输我的ArrayList,所以我写了一些代码来遵守这个

    FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
    ft.replace(R.id.fragment_youtube, new FragmentYoutubeProduct(), "youtube");
    ft.addToBackStack("youtube");
    Bundle bundle = new Bundle();
    bundle.putStringArrayList("Product",product);
    ft.commit();

我在bundle.putStringArrayList("Product",product);收到错误,我该怎么办才能解决这个问题?

4 个答案:

答案 0 :(得分:7)

首先制作InfoProduct Parceble 检查一下 - Link

然后使用`

bundle.putParcelableArrayList(product)

你可以通过`

获得arraylist
getParcelableArrayList(..)

另外check this

答案 1 :(得分:2)

您需要使用bundle.putParcelableArrayList()并将您的列表实例化为私有ArrayList<InfoProduct> product;。还要确保InfoProduct是Parcelable。

答案 2 :(得分:1)

您可以通过实施serializableparcelable来传递自定义对象的arraylist。

Android: Difference between Parcelable and Serializable?

答案 3 :(得分:0)

您的代码

bundle.putStringArrayList("Product",product);

尝试将字符串的数组列表放入包中。但是,您没有字符串数组列表。您有一个InfoProduct

的数组列表

因此,您需要将数组列表放入bundle中。为此,您需要使用the method putParcelableArrayList

bundle.putParcelableArrayList("Product, product);

为了做到这一点,您还需要确保您的对象InfoProduct在parcelable中,即可由Android进行序列化。所以你需要让它实现Parcelable interface

This post也可能会帮助您。