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

时间:2014-12-08 23:17:47

标签: java android

我想在 Pedido_1 对象内的对象的ArrayList array_produtos 中插入一个对象(类型 Produto ),就像你在里面看到的那样 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));
    }
}

1 个答案:

答案 0 :(得分:1)

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

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();
    }
}

这可能会对您有所帮助,因为您尚未在此课程中初始化您的数组。