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

Respuesta
 
Herramientas
  #1  
Viejo 05/10/12, 04:55:00
Array

[xs_avatar]
Baltus Baltus no está en línea
Usuario poco activo
 
Fecha de registro: abr 2011
Mensajes: 6
Tu operador: Movistar

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
Array

[xs_avatar]
Baltus Baltus no está en línea
Usuario poco activo
 
Fecha de registro: abr 2011
Mensajes: 6
Tu operador: Movistar

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   Portal | Indice > Todo sobre Android > Programación y Desarrollo para Android



Hora actual: 04:48:14 (GMT +1)



User Alert System provided by Advanced User Tagging (Lite) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.

Contactar por correo / Contact by mail / 邮件联系 /