Instanciar List já preenchida, dúvida [ RESOLVIDO ]

Bom dia pessoal,

Esotu com o seguinte “problema” eu tenho uma classe que herda de List…nela eu adiciono meus commands e tudo mais, até aí tudo tranquilo. Existe uma segunda classe que possui um método que retorna um List com todos os registros no meu rms…eu gostaria de instanciar minha classe que herda de List com esses registros do bando para que na hora de instanciaru m objeto dessa classe pra mostrar para o usuário na tela ela já estivesse preenchida com todos os elementos, de que forma seria possível fazer isso ?

Boa tarde!

Para instanciar a sua classe já carregando estes elementos você deve sobrescrever o construtor padrão dela ou criar um novo construtor recebendo os parâmetros necessários para você consultar os elementos e preencher a lista.

Exemplo

public class PeopleList extends LinkedList { public PeopleList() throws Exception { // Aqui você poderia por exemplo abrir uma conexão com banco e preencher um resultSet r // E depois... while (r.next()) { People p = new People(); p.setNome(r.getString("Nome")); this.add(p); } } }

Desta forma, quando você declarasse PeopleList lista = new PeopleList(), as pessoas já seriam carregadas na lista.

No exemplo eu sugeri carregar de uma base de dados e falta o código de conexão, SQL etc. Mas a lista poderia vir de um arquivo XML, ou um outro stream qualquer, até sockets.

Espero ter ajudado.

Hmmm intendi ramos, na verdade isso seria uma solução não apra celular correto ?

De qualquer forma eu me bati aqui e consegui de uma forma que não sei se é a mais correta mas que supriu minhas necessidades.

Muito obrigado pela ajuda…e aos que por acaso tiverem alguma dúvida vou postar o que eu fiz:

Primeiramente possuo essa classe que herda de List para “desenhar” minhas tela e tratar meus commands

public class ListagemUm extends List implements CommandListener {

    private ControleDeGastos app;
    private Command cm_voltar, cm_detalhes;

    ListagemUm(ControleDeGastos app) {
        super("Listagem de Gastos Gerais", List.EXCLUSIVE);
        this.app = app;

        cm_voltar = new Command("Menu", Command.BACK, 0);
        cm_detalhes = new Command("Voltar", Command.ITEM, 0);

        this.addCommand(cm_voltar);
        this.addCommand(cm_detalhes);

        MantemRegistros m1 = new MantemRegistros();
        m1.leBD2(this);
        this.setCommandListener(this);
    }

    public void commandAction(Command c, Displayable d) {
        if (c == cm_voltar) {
            app.trocaTela(0);
        } else {
            //app.trocaTela(1);
        }
    }
}

Quando preciso listar algo em outra tela chamo um méetodo troca tela da classe midlet que instancia um objeto para eu poder realizar a pesquisa na memória

   listagemum = new ListagemUm(this);
                MantemRegistros m1 = new MantemRegistros();
                listagemum = m1.leBD2(listagemum);
                display.setCurrent(listagemum);

como essa minha classe extende um List ela é um objeto do tipo list quando instanciada então eu faço ela receber o resultado da memória que é uma lista de dados e dessa forma eu consigo manipular de forma tranquila e transparente os dados…mesmo tendo que instanciar 2 objetos o que eu acho bastante.

Espero que sirva para alguém.

Abraços
Marcelo

Peço mil desculpas :oops:

Não prestei atenção que era JME.

Você está falando de um componente visual né?

Da próxima vou ficar mais atento!

:slight_smile:

Faça um método que retorno todos seus registros em um Vector.
No construtor da sua classe que herda de List, chame esse método e popule a lista.
Simples!