PDA

Ver la Versión Completa : Arraylist obtener valores.


Manu14s
10/02/14, 21:06:12
Hola ,muy buenas.
A ver si alguien puede ayudarme.
Tengo una actividad que muestra en un listview un arraylist con un adaptador para mostrar imagen,precio descripcion y precio.
Debajo he añadido un textview para mostrar la suma total de precio de todos los elementos que se van añadiendo en este arraylist. como podria obtener el valor del objeto precio y sumarlo ?

static ArrayList<ItemListView> itemsListVMiPedido = obtenerItemsMiPedido();
ItemListViewAdapter adapterlistvMiPedido = new ItemListViewAdapter(this, itemsListVMiPedido);

---------
y asi los añado
itemsListVMiPedido.add(new ItemListView(1, "LLave22", "LLave con..", "drawable/llave","1.75"));

itemsListVMiPedido.add(new ItemListView(2, "LLave1", "LLave con..", "drawable/llave2123","1.75"));

Quisiera obtener solo los valores de precio.Estan guardados en un objeto tipo String para poder mostrarlos en el textview del listview.
Imagino que una vez obtenidos( lo que no se hacer) abria que pasarlos a double y luego sumarlos.
Muchas gracias

kriogeN
10/02/14, 22:15:27
¿Y no es más fácil añadirlo a un objeto Double mientras los vas añadiendo al ArrayList? Aún así, suponiendo que tengas que hacerlo a posteriori:

Y suponiendo que tengas un método getPrecio() en la clase ItemListView que te devuelve el precio en formato String, y si no lo tienes es lo primero que tienes que hacer, lo que tienes que hacer es recorrer el ArrayList, sacar el precio y convertirlo a Double e ir sumándolo en un objeto Double:

Double precioFinal = 0;
for (ItemListView item : itemsListVMiPedido)
precioFinal += Double.parseDouble(item.getPrecio());

Manu14s
10/02/14, 23:46:50
Muchas gracias por responder. Ahora lo probare a ver si lo hago bien y te digo. Gracias!

Manu14s
11/02/14, 02:48:51
Te cuento: Funcona perfectamente. Solo tengo un problemilla mas a ver si pudieras ayudarme.
He creado un metodo :
public void sumarPedido(){
for (ItemListView item : itemsListVMiPedido)
sumaTotal += Double.parseDouble(item.getPrecio());
}
---Como tu me dijiste. A este metodo lo llamo desde el oncreate para que nada mas entrar en la actividad me muestre el total de los articulos añadidos previamente desde otras actividaddes.
El caso es que tengo :

page1.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {

itemsListVMiPedido.remove(position);

page1.invalidateViews();//refrescar listview despues de borrar elemento,asi se elimina la vista del item

}
});


}
page = page1;
break;

---para eliminar los item del listview con solo tocarlos ( tendre que poner un alert dialog para confirmar si desean borrar )
Claro si eliminas un item del listview ,el textview con el precio final deberia actualizarse con el valor actual. Pues no hay manera, justo despues de eliminar el item he añadido una llamada al metodo sumarPedido pero nada,he añadido un textview.invalidate, y tampoco...

page1.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {

itemsListVMiPedido.remove(position);

page1.invalidateViews();//refrescar listview despues de borrar elemento,asi se elimina la vista del item
sumarPedido();
tv.invalidate();
}

El caso es que si añadir una llamada al metodo sumarpedido, y borrar un articulo al salir y entrar otra vez a mi actividad de mipedido este esta actualizado, (porque vuelve a hacer el oncrete,supongo).

Bueno a ver si me puedes ayudar.Y muchas gracias de nuevo.

kriogeN
11/02/14, 09:55:48
No veo donde vuelves a asignar el valor al TV con el nuevo valor que obtienes de sumarPedido()

Manu14s
11/02/14, 13:54:25
Tv.invalidate(); con eso deberia servir o que deberia usar?,?gracias

Manu14s
11/02/14, 14:08:53
Ahhhh vale vale...debo volver a asignar el valor..dios que cabeza la mia....