[ Foro de Java ]
Hola, estoy empezando en el mundo de la programació, en concreto java/android studio y la verdad es que estoy bastante verde, por ahora programo mas por instinto que por entender el concepto de lo que hago realmente. Tengo una duda con respecto a mi programa y es que no se si estoy haciendo el recorrido de un ListView de la manera correcta o si es que por el contrario, que no estoy guardando de manera correcta los elementos en ella.
El programa es bastante simple a mi parecer, la idea es una app donde puedes introducir tus ingresos y gastos del mes y al final en un TextView te muestra un saldo X, mi código esta así:
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private ArrayList<Movimientos> listaMovimientos;
private ArrayAdapter<Movimientos> adaptador;
private Object Movimientos;
TextView tvSaldo = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btIngreso = findViewById(R.id.btIngreso);
btIngreso.setOnClickListener(this);
Button btEgreso = findViewById(R.id.btEgreso);
btEgreso.setOnClickListener(this);
Button btSaldoTotal = findViewById(R.id.btSaldoTotal);
btSaldoTotal.setOnClickListener(this);
Button btBorrar = findViewById(R.id.btBorrar);
btBorrar.setOnClickListener(this);
listaMovimientos = new ArrayList<>();
adaptador = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, listaMovimientos);
ListView ltMovimientos = findViewById(R.id.ltMovimientos);
ltMovimientos.setAdapter(adaptador);
}
@Override
public void onClick(View v) {
EditText etMontos = null;
EditText etDetalle = null;
String detalle;
float egreso;
float ingreso;
switch(v.getId()) {
case R.id.btIngreso:
etMontos = findViewById(R.id.etMontos);
etDetalle = findViewById(R.id.etDetalle);
if(etMontos.getText().toString().isEmpty()){
Toast.makeText(this, R.string.mIntroduzcaMonto, Toast.LENGTH_SHORT).show();
return;
}
if (etDetalle.getText().toString().isEmpty()){
Toast.makeText(this, R.string.mCampoObligatoiro, Toast.LENGTH_SHORT).show();
return;
}
detalle = etDetalle.getText().toString();
ingreso = Float.parseFloat(etMontos.getText().toString());
Movimientos movimiento = new Movimientos(detalle, ingreso);
listaMovimientos.add(movimiento);
adaptador.notifyDataSetChanged();
etMontos.setText("");
etDetalle.setText("");
etMontos.requestFocus();
break;
case R.id.btEgreso:
etMontos = findViewById(R.id.etMontos);
etDetalle = findViewById(R.id.etDetalle);
if(etMontos.getText().toString().isEmpty() || etMontos.getText().toString().equals("0")){
Toast.makeText(this, R.string.mIntroduzcaMonto, Toast.LENGTH_SHORT).show();
return;
}
if (etDetalle.getText().toString().isEmpty()){
Toast.makeText(this, R.string.mCampoObligatoiro, Toast.LENGTH_SHORT).show();
return;
}
detalle = etDetalle.getText().toString();
egreso = Float.parseFloat(etMontos.getText().toString());
Movimientos movimiento2 = new Movimientos(detalle, egreso);
listaMovimientos.add(movimiento2);
adaptador.notifyDataSetChanged();
etMontos.setText("");
etDetalle.setText("");
etMontos.requestFocus();
break;
case R.id.btSaldoTotal:
saldoTotal();
break;
case R.id.btBorrar:
tvSaldo.setText("");
listaMovimientos.clear();
adaptador.notifyDataSetChanged();
default:
break;
}
}
public void saldoTotal() {
float auxI = 0;
float auxE = 0;
float saldoTotal = 0;
for (Movimientos movimientos : listaMovimientos){
auxI += movimientos.getIngresos();
}
for (Movimientos movimiento2 : listaMovimientos ){
auxE += movimiento2.getIngresos();
}
saldoTotal = auxI - auxE;
String stringTotal = Float.toString(saldoTotal);
tvSaldo = findViewById(R.id.tvSaldo);
tvSaldo.setText(getString(R.string.mSumaMovimientos)+ ": " + stringTotal);
}
}
//CLASE
package com.tokioschool.ahorrapp;
import java.lang.reflect.Array;
class Movimientos {
private String detalle;
private float ingresos;
public Movimientos (String detalle, float ingresos){
this.detalle = detalle;
this.ingresos = ingresos;
}
public String getDetalle() {
return detalle;
}
public float getIngresos() {
return ingresos;
}
@Override
public String toString() {
return "(" + detalle + ") " + ingresos;
}
}
Cualquier comentario para mejorarlo o consejos, son bienvenidos, muchas gracias de antemano.
(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)