0 votos

Saludos Ramon, estoy aqui para molestarte, jaja. Estoy haciendo una aplicacion, en la cual poder cargar una lista de compras, productos con sus respectivos precios. Hice un formulario(layout) en el cual, tengo dos editText, uno para el nombre del producto, y otro con el precio, y un boton, el cual al presionar agregue el producto a un listView. Sabrias decirme como hago para que al agregar el producto, en el sub item se agregue el precio? Te paso mi codigo.

protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.agregar_producto);

final EditText editText1 = (EditText) findViewById(R.id.etNombreProducto);
final EditText editText2 = (EditText) findViewById(R.id.etPrecio);
final Button agregar = (Button) findViewById(R.id.btnAgregar);

final ListView listView = (ListView) findViewById(R.id.listView1);
final ArrayList<String> values = new ArrayList<String>();

final ArrayAdapter<String> adaptador = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_2, android.R.id.text1, values);
listView.setAdapter(adaptador);

agregar.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub

values.add(editText1.getText().toString());
values.add(editText2.getText().toString());
adaptador.notifyDataSetChanged();
}
});
}

 

preguntado por Mario Dic 22, 2014 en Android

1 Respuesta

0 votos
Mejor respuesta

Hola Mario,
Necesitas un ExpandableListView (una fila que se expande). Para ello tienes que usar un Adapter personalizado que herede de BaseExpandableListAdapter (documentación en http://developer.android.com/reference/android/widget/BaseExpandableListAdapter.html). Es muy sencillo, fíjate como utilizamos el adaptador personalizado en http://jarroba.com/listview-o-listado-en-android/. Te recomiendo que mires también en http://developer.android.com/reference/android/widget/ExpandableListView.html

respondido por Jarroba [Admin] Dic 22, 2014
Excelente Maestro! Ya pude resolver ese lado del problema usando los adaptadores personalizados que explicas en los posts anteriores. Ahora te hago un par de consultas mas, como hago para grabar en base de datos los productos que voy almacenando dinámicamente en la lista,para poder hacer las respectivas consultas? Ya cree una base de datos con SQLite y cree las tablas. Y la segunda consulta, me gustaría poner un textView que se vaya actualizando con el total a gastar a medida que voy agregando productos. Desde ya muchas gracias por la ayuda!

Si tienes un formulario lo más sencillo es que hagas un insert en la base de datos tal cual desde ahí (puedes ver un ejemplo en http://developer.android.com/training/basics/data-storage/databases.html). Para actualizar el TextView, si guardas la referencia al objeto puedes actualizar el texto desde donde estés (dependerá de donde tienes el TextView, si en un Fragment o en el propio Layout del ListView lo podrás pasar de una manera o de otra).

Una vez mas, muchas gracias por responder y estar al tanto con mi problema. No entendi muy bien la parte de guardar la referencia al objeto para actualizar el texto. Podrias explicarmelo? Te paso mi codigo y te explico el embrollo en el que estoy metido , jaja.

agregar.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub

values.add(new Producto(editText1.getText().toString(), “$ ” + editText2.getText().toString()));
adaptador.notifyDataSetChanged();

int total = 0;

for(int i = 0;i<values.size();i++){

Integer numero = Integer.parseInt(editText2.getText().toString());

total = numero + total;

TextView tot = (TextView) findViewById(R.id.txtTotal);
tot.setText(total);

editText1.setText(“”);
editText2.setText(“”);

}
}

Lo que quiero hacer, es que al agregar un nuevo producto, el TextView “tot”, se actualice con la suma de cada valor que voy agregando (en este caso, el EditText2 es el que contiene el valor del precio del producto). En el codigo que puse arriba, desde el ciclo For, es algo que intente hacer pero no esta bien.

Problema solucionado! Errores de principiante… Borre el ciclo for que no cumplia ninguna funcion y declare la variable total al principio de la clase.