Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android arraylist中的最后一个变量正在重写所有变量_Android - Fatal编程技术网

Android arraylist中的最后一个变量正在重写所有变量

Android arraylist中的最后一个变量正在重写所有变量,android,Android,这是我的ProductcatalogClass: public class ProductcatalogClass { private ArrayList<ProductClass> productlist; public ArrayList addproduct() { // ... return productlist; } } public class ProductClass { pr

这是我的ProductcatalogClass

public class ProductcatalogClass {
    private ArrayList<ProductClass> productlist;

    public ArrayList addproduct() {        

        // ...
        return productlist;   
    }
}
public class ProductClass {
    private String productName;
    private String availability;
    private int price;

    // getters and setters
}
...
我应该如何解决这个问题?
我知道有些方法尚未完成,但在我弄清楚如何解决此arrayList问题之前,我无法真正完成。

您使用的是单个
产品(我将其重命名为更好的名称)对象,并将其重复添加到列表中,因此难怪您会得到此结果。为了获得更好(正确)的代码,您可以在这个类中使用一个构造函数来构造一个新实例并设置所有成员。对于较短的代码,可以使用3个列表(每个属性一个)并对其进行迭代。但是,这不会很好地扩展到更大的数量或属性,所以我不会显示它

产品中创建构造函数

public class Product {
    private String productName;
    private String availability;
    private int price;

    public Product(String productName, String availability, int price) {
        this.productName = productName;
        this.availability = availability;
        this.price = price;
    }
}
在catalog类中:

public List<Product> addproduct() {
    productList.addAll(Arrays.asList(
        new Product("Dell_1", "Available", 600),
        new Product("Dell_2", "Available", 800),
        new Product("Dell_3", "Available", 590),
        new Product("Dell_4", "Available", 400),
        new Product("Dell_5", "Available", 700),
        new Product("Dell_6", "Available", 530),
        new Product("Dell_7", "Available", 550),
        new Product("Dell_8", "Available", 500),
        new Product("Dell_9", "Available", 700),
        new Product("Dell_10", "Available", 600));
    return productList;
}
public List addproduct(){
productList.addAll(Arrays.asList(
新产品(“Dell_1”,“可用”,600),
新产品(“Dell_2”,“可用”,800),
新产品(“Dell_3”,“可用”,590),
新产品(“Dell_4”,“可用”,400),
新产品(“Dell_5”,“可用”,700),
新产品(“Dell_6”,“可用”,530),
新产品(“Dell_7”,“可用”,550),
新产品(“Dell_8”,“可用”,500),
新产品(“Dell_9”,“可用”,700),
新产品(“戴尔10”,“可用”,600);
返回产品列表;
}

在此阶段,您可以看到此方法没有意义,因为您总是添加完全相同的产品集。如果我不知道您打算如何处理此问题,则无法进一步回答。

当您将
产品添加到
产品列表中时,实际上只添加了对该对象的引用(类似于C中的指针)。因此,如果您将同一对象添加到列表中十次,您将有一个列表,其中包含对一个对象的十个引用


每次你想把它添加到你的列表中时,你都应该创建新的
产品。

ohh thankuu..你能告诉我怎么做吗..我的意图是创建5个供应商和他们的10个带有产品目录的产品。这是一个供应商的产品列表。我想在我的控制台屏幕上打印所有这些。为什么这个方法总是添加使用相同的产品?我也没有遇到问题。现在在catalog类中,它显示了布尔值无法转换为arraylist的错误。我如何从main类打印它?