繁体   English   中英

将一个对象发送到另一个对象内的数组

[英]Send an object to an array inside another object

我想插入的对象(类型Produto)Pedido_1对象内部对象的ArrayList array_produtos内,你可以itemClicked方法中看到。 当我运行该应用程序时,我单击gridview的某个元素以运行此方法,该应用程序将停止,并向我显示错误“不幸的是,该应用程序已停止”。

Produto.java

public class Produto {

    private final int cod_produto;
    private String nome;
    private double preco;
    private int quantidade;
    private int tempo;
    private int imagem;

    public Produto(int cod_produto, String nome, double preco,int quantidade, int tempo, int imagem) {
        super();
        this.cod_produto = cod_produto;
        this.nome = nome;
        this.preco = preco;
        this.quantidade = quantidade;
        this.tempo = tempo;
        this.imagem = imagem;
    }
}

Pedido.java

public class Pedido {

    private final int cod;
    private static int cod_aux=1;
    private int tempo_total;
    private double preco;
    private ArrayList<Produto> array_produtos;

    public Pedido() {
        this.cod = cod_aux;
        cod_aux++;
    }

    public void addProduto(Produto prodt){
        this.array_produtos.add(prodt);
        this.tempo_total += prodt.getTempo();
        this.preco += prodt.getPreco();
    }
}

MainActivity.java

public class MainActivity extends Activity {

    private ArrayList<Produto> produtos;
    private ArrayList<Pedido> produtos_pedidos;
    private int number_requests;
    private Produto produto_1;
    private Pedido pedido_1;
    private GridView gv;
    private ListView lv;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        produtos = new ArrayList<Produto>();
        produtos_pedidos = new ArrayList<Pedido>();
        number_requests=0;

        //Products
        produto_1 = new Produto(1, "Café",0.60,4,4,R.drawable.cafe1);
        produtos.add(produto_1);

        //Requests
        pedido_1 = new Pedido(); //cria primeiro pedido
        produtos_pedidos.add(pedido_1); //Atribui à lista de pedidos

        gv = (GridView)findViewById(R.id.gv_produtos);
        lv = (ListView) findViewById(R.id.lv_produtos_pedidos);

        gv.setAdapter(new GridAdapter(this, array_produtos));

        ArrayAdapter<Pedido> arrayAdapter = new ArrayAdapter<Pedido>(this, android.R.layout.simple_list_item_1,produtos_pedidos);

        lv.setAdapter(arrayAdapter);
    }

    public void itemClicked(int position) {
        Toast.makeText(getBaseContext(), "Produto inserido!", Toast.LENGTH_LONG).show();
        produtos_pedidos.get(number_requests).addProduto(produtos.get(position));
    }
}

我认为您需要在代码中执行以下操作:

public class Pedido {

    private final int cod;
    private static int cod_aux=1;
    private int tempo_total;
    private double preco;
    private ArrayList<Produto> array_produtos;

    public Pedido() {
        this.cod = cod_aux;
        cod_aux++;
        array_produtos= new ArrayList<Produto>();
    }

    public void addProduto(Produto prodt){
        this.array_produtos.add(prodt);
        this.tempo_total += prodt.getTempo();
        this.preco += prodt.getPreco();
    }
}

这可能对您有帮助,因为您尚未在此类中初始化数组。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM