Acceder

Ver la Versión Completa : [ CONSULTA ] Cambiar valor en cursor para actualizarlo en listview


l_turcios
01/11/17, 05:25:03
Buenas noches a tod@s!

Espero puedan ayudarme con un problema que se me ha presentado.
Estoy intentado crear una aplicacion que necesita 3 activity
En el primero se ingresa un codigo (llamemoslo asi) el cual se consulta en una tabla de una base de datos Sqlite, una vez encontrado se hace otro select para cargar los registros de una tabla (20 registros, 3 campos por registro ), se deposita todo esto en el adaptador para crear el listview en el segundo activity
Ya estando en el segundo activity cuyo contenido es el listview (resumamoslo de esa manera ya que es la parte importante) he creado un onClickItemListener el cual toma el campo string y el campo blob para pasarlos por el intent al 3er. activity.
En el tercer activity se ingresa un valor numerico (aqui entra en juego el campo int de la tabla de 20 registros) el cual debera regresar al activity anterior (el segundo) donde se debe "refrescar" el elemento clickeado.
He logrado traer ese valor numerico, lo se porque lo presento en un Toast y ahi esta; pero no logro actualizar el item del listview.



lvItems.setOnItemClickListener(new AdapterView.OnItemClickListener() {

@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {

String votesqty = ((TextView) view.findViewById(R.id.votesqty)).getText().toStri ng();

Cursor selforvote = (Cursor) adapterView.getItemAtPosition(i);
code = selforvote.getInt(0);

Intent intent = new Intent(Main2Activity.this, IngresoActivity.class);
intent.putExtra("txtVote", selforvote.getString(1) );
intent.putExtra("qtyVotes", votesqty);

byte[] imgByte = selforvote.getBlob(2);
intent.putExtra("jpgVote", imgByte);

startActivityForResult(intent, code);
}
});Y aqui ni idea de como seguir!!!


@Override
public void onActivityResult(int requestCode, int resultCode, Intent data)
{
super.onActivityResult(requestCode, resultCode, data);

a = data.getStringExtra("VP");

if (requestCode == 1) {
if (resultCode == [I]RESULT_OK) {
Toast.makeText(this, data.getStringExtra("VP"), Toast.LENGTH_SHORT).show();
}
} else {
if (requestCode == 2){
Toast.makeText(this, data.getStringExtra("VP"), Toast.LENGTH_SHORT).show();
}
}
}
Espero puedan ayudarme, gracias de antemano!

mocelet
01/11/17, 09:06:11
El procedimiento es actualizar la estructura de datos (sqlite, arrays, etc.) con los nuevos valores y llamar al notifyDataSetChanged del adapter para que vuelva a leer los datos y actualice las vistas.

l_turcios
01/11/17, 09:46:30
Gracias mocelet, (http://www.htcmania.com/member.php?u=510787)

ahora bien, una pregunta... se puede modificar el contenido del cursor sin alterar la tabla en la base de datos?

Es decir, yo quiero que el dato que obtengo del activity3 solo se escriba en el cursor, en otras palabras "temporalmente" ya que seria necesario eso para actualizar el contenido en pantalla dentro del listview porque voy a agregar un boton que permita hacer el update respectivo a la tabla, pero para eso se iran refrescando valores en pantalla de los distintos elementos del listview para posteriormente enviar todas esas modificaciones atraves del update que te comento.