我已经为这样的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);
收到错误,我该怎么办才能解决这个问题?
答案 0 :(得分:7)
首先制作InfoProduct Parceble 检查一下 - Link
然后使用`
bundle.putParcelableArrayList(product)
你可以通过`
获得arraylistgetParcelableArrayList(..)
答案 1 :(得分:2)
您需要使用bundle.putParcelableArrayList()
并将您的列表实例化为私有ArrayList<InfoProduct> product;
。还要确保InfoProduct是Parcelable。
答案 2 :(得分:1)
您可以通过实施serializable
或parcelable
来传递自定义对象的arraylist。
答案 3 :(得分:0)
您的代码
bundle.putStringArrayList("Product",product);
尝试将字符串的数组列表放入包中。但是,您没有字符串数组列表。您有一个InfoProduct
因此,您需要将数组列表放入bundle中。为此,您需要使用the method putParcelableArrayList
bundle.putParcelableArrayList("Product, product);
为了做到这一点,您还需要确保您的对象InfoProduct
在parcelable中,即可由Android进行序列化。所以你需要让它实现Parcelable interface
This post也可能会帮助您。