Foros del Web » Programación para mayores de 30 ;) » Java »

Duda Lista Dependiente Midlet (JME)

Estas en el tema de Duda Lista Dependiente Midlet (JME) en el foro de Java en Foros del Web. Cordial Saludo He creado el siguiente Midlet, en el cual se listan marcas de carros (Chevrolet, Mazda, Renault, BMW y Daewoo), la idea es que ...
  #1 (permalink)  
Antiguo 13/10/2011, 09:48
 
Fecha de Ingreso: marzo-2009
Ubicación: Cali (Valle) - Colombia
Mensajes: 164
Antigüedad: 15 años, 8 meses
Puntos: 2
De acuerdo Duda Lista Dependiente Midlet (JME)

Cordial Saludo

He creado el siguiente Midlet, en el cual se listan marcas de carros (Chevrolet, Mazda, Renault, BMW y Daewoo), la idea es que una vez se seleccione cada marca, se visualice una lista con determinados modelos de esa marca, más he intentado desarrollar esta funcionalidad inicialmente solo para la marca "chevrolet", más al ser esta seleccionada no se visualiza el listado con sus modelos, ni tampoco se imprimen mensajes de error en la consola de NetBeans, por lo cual me veo en la necesidad de recurrir a la ayuda de ustedes (aclaro soy nuevo en Java).


/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package hello;

import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;

/**
* @author Luis Guillermo Trejo
*/
public class automovil extends MIDlet implements CommandListener {

private Display display;
private Form formIndex;

private Command cMExit;
private ChoiceGroup marca;
//private List marca;
private ChoiceGroup modelosChevrolet;
private ChoiceGroup modelosMazda;
private ChoiceGroup modelosRenault;
private ChoiceGroup modelosBMW;
private ChoiceGroup modelosDaewoo;

public void startApp() {
display = Display.getDisplay(this);
getFormIndex();
}

public void pauseApp() {
}

public void destroyApp(boolean unconditional) {
}

public void getFormIndex() {
formIndex = new Form("Calculadora");

cMExit = new Command("Salir", Command.EXIT, 1);

String[] marcasAutomoviles = {"","Chevrolet","Mazda","Renault","BMW","Daewoo "};
marca = new ChoiceGroup("Marca", Choice.POPUP, marcasAutomoviles, null);
//marca = new List("Marca", List.EXCLUSIVE, marcasAutomoviles, null);

String[] marcaChevrolet = {"2000","2001","2002"};
modelosChevrolet = new ChoiceGroup("Marca", Choice.POPUP, marcaChevrolet, null);

String[] marcaMazda = {"2003","2004","2005"};
modelosMazda = new ChoiceGroup("Marca", Choice.POPUP, marcaMazda, null);

String[] marcaRenault = {"2006","2007","2008"};
modelosRenault = new ChoiceGroup("Marca", Choice.POPUP, marcaRenault, null);

String[] marcaBMW = {"2009","2010","2011"};
modelosBMW = new ChoiceGroup("Marca", Choice.POPUP, marcaBMW, null);

String[] marcaDaewoo = {"2012","2013","2014"};
modelosDaewoo = new ChoiceGroup("Marca", Choice.POPUP, marcaDaewoo, null);

formIndex.append(marca);

formIndex.addCommand(cMExit);

display.setCurrent(formIndex);
formIndex.setCommandListener(this);
}

public void commandAction(Command c, Displayable d) {

String marcaSeleccionada = marca.getString(marca.getSelectedIndex());

if (c == cMExit) {
destroyApp(true);
notifyDestroyed();
} else if (marcaSeleccionada.equals("Chevrolet")) {
formIndex.append(modelosChevrolet);
}
}
}


Quedo atento a sus comentarios y aportes.

Muchas gracias.
  #2 (permalink)  
Antiguo 13/10/2011, 10:26
Avatar de sneyder05  
Fecha de Ingreso: enero-2009
Ubicación: Cali
Mensajes: 172
Antigüedad: 15 años, 10 meses
Puntos: 17
Respuesta: Duda Lista Dependiente Midlet (JME)

Para controlar el evento change de la lista marca, primero debes hacer que la clase extienda de ItemStateListener, esta clase te implementa el metodo public void itemStateChanged(Item item),que como puedes ver recibe un paràmetro de tipo Item; segundo, debes setear el escuchador a tu formulario de la siguiente forma:
Código PHP:
formIndex.setItemStateListener(this); 
Ya con esto puedes manipular el metodo abstracto de ItemStateListener, asi:
Código PHP:
public void itemStateChanged(Item item) {       
        if(
item == marca){
            if(
marca.getString(marca.getSelectedIndex()).equals("Chevrolet")){
                
formIndex.append(modelosChevrolet);
            }
        }
    } 
En ese caso cargaria lista de modelosChevrolet.

Saludos ;)
  #3 (permalink)  
Antiguo 19/10/2011, 10:10
 
Fecha de Ingreso: marzo-2009
Ubicación: Cali (Valle) - Colombia
Mensajes: 164
Antigüedad: 15 años, 8 meses
Puntos: 2
De acuerdo Respuesta: Duda Lista Dependiente Midlet (JME)

Hola sneyder05, muchas gracias por tu respuesta, me fue de gran ayuda, más vale la pena aclarar que "ItemStateListener" es una interfaz, por lo cual no se extiende sino que se implementa, así mismo tiene el método abstracto "itemStateChanged", mi código quedó así:


/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package hello;

import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;

/**
* @author Luis Guillermo Trejo
*/
public class automovil extends MIDlet implements /*CommandListener,*/ ItemStateListener {

private Display display;
private Form formIndex;

private Command cMExit;
private ChoiceGroup marca;
//private List marca;
private ChoiceGroup modelosChevrolet;
private ChoiceGroup modelosMazda;
private ChoiceGroup modelosRenault;
private ChoiceGroup modelosBMW;
private ChoiceGroup modelosDaewoo;

public void startApp() {
display = Display.getDisplay(this);
getFormIndex();
}

public void pauseApp() {
}

public void destroyApp(boolean unconditional) {
}

public void getFormIndex() {
formIndex = new Form("Calculadora");

cMExit = new Command("Salir", Command.EXIT, 1);

String[] marcasAutomoviles = {"","Chevrolet","Mazda","Renault","BMW","Daewoo "};
marca = new ChoiceGroup("Marca", Choice.POPUP, marcasAutomoviles, null);
//marca = new List("Marca", List.EXCLUSIVE, marcasAutomoviles, null);

String[] marcaChevrolet = {"Aveo","Cruze","Optra"};
modelosChevrolet = new ChoiceGroup("Marca Chevrolet", Choice.POPUP, marcaChevrolet, null);

String[] marcaMazda = {"Allegro","3","6"};
modelosMazda = new ChoiceGroup("Marca Mazda", Choice.POPUP, marcaMazda, null);

String[] marcaRenault = {"Megane","Logan","Clio"};
modelosRenault = new ChoiceGroup("Marca Renault", Choice.POPUP, marcaRenault, null);

String[] marcaBMW = {"2009","2010","2011"};
modelosBMW = new ChoiceGroup("Marca BMW", Choice.POPUP, marcaBMW, null);

String[] marcaDaewoo = {"Cielo","Matiz","2014"};
modelosDaewoo = new ChoiceGroup("Marca Daewoo", Choice.POPUP, marcaDaewoo, null);

formIndex.append(marca);

formIndex.addCommand(cMExit);

display.setCurrent(formIndex);
//formIndex.setCommandListener(this);
formIndex.setItemStateListener(this);
}

/*public void commandAction(Command c, Displayable d) {

String marcaSeleccionada = marca.getString(marca.getSelectedIndex());

if (c == cMExit) {
destroyApp(true);
notifyDestroyed();
} else if (marcaSeleccionada.equals("Chevrolet")) {
formIndex.append(modelosChevrolet);
}
}*/

public void itemStateChanged(Item item) {
//throw new UnsupportedOperationException("Not supported yet.");
//if(item == marca){
if (marca.getString(marca.getSelectedIndex()).equals( "Chevrolet")) {
//formIndex.delete(1);
formIndex.append(modelosChevrolet);
} else if (marca.getString(marca.getSelectedIndex()).equals( "Mazda")) {
formIndex.delete(1);
formIndex.append(modelosMazda);
} else if (marca.getString(marca.getSelectedIndex()).equals( "Renault")) {
formIndex.delete(1);
formIndex.append(modelosRenault);
} else if (marca.getString(marca.getSelectedIndex()).equals( "BMW")) {
formIndex.delete(1);
formIndex.append(modelosBMW);
} else if (marca.getString(marca.getSelectedIndex()).equals( "Daewoo")) {
formIndex.delete(1);
formIndex.append(modelosDaewoo);
}
//}
}
}


Más ahora cuento con un pequeño inconveniente, si descomento la línea "//formIndex.delete(1);", la aplicación no me funciona y como está actualmente solo funciona si comienzo seleccionando la marca "Chevrolet", más si comienzo seleccionando otra no funciona, por lo cual necesito alguna manera de comprobar la existencia del item 1 y con base en esto generar la respectiva condición en cada "formIndex.delete(1);". Ya he Googleado un poco, más aún no hallo un método ó funcionalidad que me pueda ayudar con esto, por lo cual agradecería tu ayuda.

Quedo atento a tus comentarios.

Muchas gracias.

Etiquetas: dependiente, lista, netbeans
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:04.