Home Menu

Menu



Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android


 
Herramientas
  #1  
Viejo 05/10/12, 04:55:00
Avatar de Baltus
Baltus Baltus no está en línea
Usuario poco activo
Mensajes: 6
 
Fecha de registro: abr 2011
Mensajes: 6
Tu operador: Movistar
Mencionado: 0 comentarios
Tagged: 0 hilos
Problema ContextMenu, Listview y Dialog

EDITADO. La consulta a realizar ha cambiado.

Saludos. Estoy intentando hacer un Listview con ContextMenu y varias opciones en este.

Una de ellas es la de editar el nombre de uno de los elementos del Listview desde un Dialog. El problema lo encuentro al intentar acceder a los datos del Listview desde el Dialog, ya que no sé cómo recuperar el item que ha sido seleccionado antes de mostrar el Dialog. Os dejo el código a ver si alguien puede echarme una mano :

Dialogs tanto para editar como para añadir elemento nuevo :
Código:
protected Dialog onCreateDialog(int id) {
        switch (id) {
        case DIALOGO_EDITAR:
            // Primero preparamos el interior de la ventana de diálogo inflando su fichero XML
                        String infService = Context.LAYOUT_INFLATER_SERVICE;
                        LayoutInflater li =(LayoutInflater)getApplicationContext().getSystemService(infService);
                        // Inflamos el componente compuesto definido en el XML
                        View inflador = li.inflate(R.layout.ventana, null);
                        // Buscamos los componentes dentro del Diálogo
                        final TextView nombreEdit = (TextView) inflador.findViewById(R.id.textView1);
                        nombreEdit.setText("Hola que tal");
                        ventana = new AlertDialog.Builder(this);
                        ventana.setTitle("Editar Artículo");
                        // Asignamos el contenido dentro del diálogo (el que hemos inflado previamente)
                        ventana.setView(inflador);
                        // ¡¡ No se puede incluir un mensaje dentro de este tipo de diálogo!!!
                        ventana.setPositiveButton("Aceptar", new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog, int boton) {
                        
                                
                            }
                        });
                        ventana.setNegativeButton("Cancelar", new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog, int boton) {
                                Toast.makeText(getApplicationContext(), "Has pulsado el botón 'Cancelar'", Toast.LENGTH_SHORT).show();
                            }
                        });
                        return ventana.create();

        case DIALOGO_NUEVO:
            // Primero preparamos el interior de la ventana de diálogo inflando su fichero XML
                        String infService1 = Context.LAYOUT_INFLATER_SERVICE;
                        LayoutInflater li1 =(LayoutInflater)getApplicationContext().getSystemService(infService1);
                        // Inflamos el componente compuesto definido en el XML
                        View inflador1 = li1.inflate(R.layout.ventana, null);
                        // Buscamos los componentes dentro del Diálogo
                        final TextView nombreEdit1 = (TextView) inflador1.findViewById(R.id.textView1);
            
                        ventana = new AlertDialog.Builder(this);
                        ventana.setTitle("Artículo Nuevo");
                        // Asignamos el contenido dentro del diálogo (el que hemos inflado previamente)
                        ventana.setView(inflador1);
                        // ¡¡ No se puede incluir un mensaje dentro de este tipo de diálogo!!!
                        ventana.setPositiveButton("Aceptar", new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog, int boton) {
                                
                            }
                        });
                        ventana.setNegativeButton("Cancelar", new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog, int boton) {
                                Toast.makeText(getApplicationContext(), "Has pulsado el botón 'Cancelar'", 1).show();
                            }
                        });
                        return ventana.create();
            }
        return null;
        }
El ContextMenu desde el que se llama a los dialog :
Código:
    public boolean onContextItemSelected(MenuItem item) {
         
        AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
        
        switch (item.getItemId()) {
            case R.id.EditTextOp:
                showDialog(DIALOGO_EDITAR);
                return true;
            case R.id.EliminarTextOp:
                datos.remove(info.position);
                ((BaseAdapter) this.lv.getAdapter()).notifyDataSetChanged();
                //this.datos.remove(info.position);
                return true;
            default:
                return super.onContextItemSelected(item);
                
        }
    }
La estructura del Listview :

Código:
public class MainActivity extends Activity {

    private static final int DIALOGO_EDITAR = 1;
    private static final int DIALOGO_NUEVO = 2;
    
    ArrayList<Articulo> datos = new ArrayList<Articulo>();

    private ListView lv;
    private AlertDialog.Builder ventana;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        lv = (ListView) findViewById(R.id.lista1);
        
        Articulo a = new Articulo("pan", false);
        Articulo b = new Articulo("leche", false);
        Articulo c = new Articulo("agua", false);
        Articulo d = new Articulo("arroz", true);
        Articulo e = new Articulo("pollo", false);
        Articulo f = new Articulo("zumo", true);
       
        datos.add(a);
        datos.add(b);
        datos.add(c);
        datos.add(d);
        datos.add(e);
        datos.add(f);
        
        
        // Creamos el Adaptador que se usa para mostrar las opciones del listado
        final ArrayAdapter<Articulo> adaptador = new AdaptadorArticulos(this, datos);
        // Asignamos el adaptador al ListActivity para que sepa cómo dibujar el listado de opciones
        lv.setAdapter(adaptador);
        
        registerForContextMenu(lv);

Última edición por Baltus Día 05/10/12 a las 16:42:25
Responder Con Cita


  #2  
Viejo 05/10/12, 16:15:20
Avatar de Baltus
Baltus Baltus no está en línea
Usuario poco activo
Mensajes: 6
 
Fecha de registro: abr 2011
Mensajes: 6
Tu operador: Movistar
Mencionado: 0 comentarios
Tagged: 0 hilos
Bumpeo porque he editado el post para completar la consulta. A ver si alguien sabe cómo se realiza el acceso a datos que no consigo solucionar.

Gracias de antemano.
Responder Con Cita
Respuesta

Estás aquí
Regresar   HTCMania > Todo sobre Android > Programación y Desarrollo para Android


Reglas de Mensajes
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Las caritas están On
Código [IMG] está On
Código HTML está Off

Saltar a Foro



Hora actual: 17:18:03 (GMT +1)

Cookies
Powered by vBulletin™
Copyright © vBulletin Solutions, Inc. All rights reserved.
 
HTCMania: líderes desde el 2007