PDA

Ver la Versión Completa : Problema con boton dentro de ListView


vzk91
14/06/13, 15:34:04
Hola,

Vereis yo tengo una clase llamada Main, en esta clase tengo un listview. El ListView es personalizado, por lo que tambien tengo la clase MainAdapter que se encarga de crear el adapter para el ListView.

Dentro del getView() de mi MainAdapter aparte de los tipicos TextView e imagen, tengo un boton para cada elemento del ListView. El boton funciona correctamente cuando le llamo pero necesito que al terminar las operaciones mande un mensaje a la clase Main en forma de toast, alertdialog.... cualquier tipo de notificación visual.

Esto es posible ? porque por mas que intento con los toast siempre de da error de contexto, y con los alertdialog no me permite crearlos ni sobre Main ni sobre MAinAdapter....


un saludo

kriogeN
14/06/13, 15:54:52
Debería funcionarte pasando como parámetro el Context (que será la Activity en sí) al MainAdapter y usando luego eso que has pasado como parámetro como Context del Toast.

vzk91
15/06/13, 13:34:25
Yo desde la clase main ( la que recibe el mensaje ) llamo al adaptador pasandole como parametro el contexto con getApplicationContext().

Y en el adaptater despues de recogerla, creo el Alert dialog asi:

AlertDialog.Builder dialog = new AlertDialog.Builder(context);Pero nada, me da error el sigueinte error:

android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application.....
Ademas al problema este se suma que el listener para el boton que va en el listview, el propio listener del listview a dejado de funcionar, es decir que si no toco en el boton no hace nada.... (Este es el codigo del listener del boton dentro del adapter)


Button bRechazar = (Button) vi.findViewById(R.id.bReachazar);

bRechazar.setOnClickListener(new View.OnClickListener() {

public void onClick(View view) {

AlertDialog.Builder dialog = new AlertDialog.Builder(context);

dialog.setMessage("MENSAJE DE CONFIRMACION");
dialog.setCancelable(false);
dialog.setPositiveButton("Si", new DialogInterface.OnClickListener() {

@Override
public void onClick(DialogInterface dialog, int which) {

// PROCESO SI ACEPTA


}
});
dialog.setNegativeButton("No", new DialogInterface.OnClickListener() {

@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});
dialog.show();


}
});

EDITO: El problema del listener del listview ya esta solucionado, no se porque el boton habia cogido la propiedad focusable y era lo que me estaba molestando.

vzk91
16/06/13, 13:27:14
Ya he solucionado el problema. Desde el main a la hora de llamar al adapter y pasarle el context en vez de usar getApplicationContext() simplemente use this y funciona correcto.

Un comportamiento raro a mi parecer, ya que los toast si funcionaban correctamente con getApplicationContext().

un saludo!