我想在 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));
}
}
答案 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();
}
}
这可能会对您有所帮助,因为您尚未在此课程中初始化您的数组。