Pessoal eu tenho um metodo de busca usando o floggy e tenho uma lista q uso o LWUIT para as minhas views, sendo oq ta acontencendo q eu nao estou conseguindo pegar o item desta lista, toda vez q tento pegar ele sempre mim traz o primeiro da lista. PORFAVOR HELP!!! :oops:
AGRADECO TODOS VCS DESDE JA
AKI EU CHAMO MEU METODO DE CONSULTAR
public void actionPerformed(ActionEvent e) {
if(e.getSource() == voltar){
OpenWindow.showMenu();
} else if (e.getSource() == consultarDadosAberta) {
//TENTO PEGAR O ID AKI
int id = list.getSelectedIndex();
Os pegarOs = new Os();
try {
pegarOs = os.consultarDadoAberta(id);
System.out.println(pegarOs);
} catch (FloggyException ex) {
ex.printStackTrace();
}
OpenWindow.showDetalheAberta();
}
MEU FORM ONDE EU TRAGO A LISTA
public Form CreateForm(){
try {
osMobileIcon = Image.createImage("/osMobilePequeno.png");
osMobileBackground = Image.createImage("/backgroundCompleto.png");
} catch (Exception e) {
System.out.println("Erro ao adicionar a imagem : " + this.getClass());
}
//formListar = new Form("Listagem OS Aberta");
this.setLayout(new BorderLayout());
this.setBgImage(osMobileBackground);
this.addCommandListener(this);
//formListar.getTitleStyle().setBgColor(0xff8040);
Label ImagemLabel = new Label(osMobileIcon);
this.addComponent(BorderLayout.NORTH ,ImagemLabel);
this.addCommand(voltar);
this.addCommand(consultarDadosAberta);
this.addCommand(deletarDadoEscolhido);
ListModel model = new DefaultListModel(os.listarOSEmAberta());
list.setModel(model);
this.addComponent(BorderLayout.CENTER,list);
return this;
}
MEU METODO DE CONSULTAR ONDE EU PASSO ID COMO PARAMENTRO
//consultar um dado e detalhar
public Os consultarDadoAberta(int id) throws FloggyException {
Os osbjeto = new Os();
try {
PersistableManager.getInstance().load(osbjeto, id);
System.out.println(osbjeto.toString());
} catch (FloggyException e) {
}
return osbjeto;
}
Bom dia Maxdavis.
Acredito que o método LOAD do floggy não é o mais apropriado pra vc nesse momento. Se não me engano esse método recupera um objeto através do seu id (id criado pelo RMS e não id do seu objeto, nem o índice que ele se encontra na lista).
Caso você esteja populando sua lista LWUIT com o Objeto, basta vc recuperar o objeto através do método list.getSelectedObject(), pegar o seu id (ou qualquer outro atributo que vc deseje utilizar para recuperá-lo do banco).
Caso você esteja populando sua lista LWUIT apenas com o nome (ou outro atributo desse objeto Os), basta vc recuperá-lo da lista e repassar ao método consultarDadoAberta().
Você também deverá utilizar o método find() de PersistableManager para recuperar os objetos do RMS. Com ele vc pode utilizar um filtro para pegar apenas a informação que precisa, ou se você achar mais fácil, pode recuperar todos os objetos e compará-los em um loop.
Bom, acho q é isso.
Se eu me enganei, por favor alguém me corrija.
Abraço.
Mas no caso eu coloco uma lista, como mostra meu metodo abaixo. Daria pra fazer dessa forma?
//metodo de listar OS Em Aberta
public Vector listarOSEmAberta() {
ObjectSet ose = null;
//Gera um filtro
EmAbertaFilter filtro = new EmAbertaFilter();
Vector listarOSEmAberta = new Vector();
try {
ose = PersistableManager.getInstance().find(Os.class, filtro, null);
for (int i = 0; i < ose.size(); i++) {
Os objetoOs = (Os) ose.get(i); //obtem as instancias do banco
listarOSEmAberta.addElement(objetoOs.getCod() + " - " + objetoOs.getDescricao());
}
} catch (FloggyException ex) {
listarOSEmAberta.addElement("Erro list record");
}
return listarOSEmAberta;
}
Valeu rafdutra! Foi melhor trabalhar com o Objeto, eu tb tava erado na hora de listar e adcionar os meus itens no meu List. SEGUE MEU CODIGO ABAIXO
Minha Classe Form
public class Listar_OsAberta extends Form implements ActionListener {
//private Form formListar;
private Image osMobileIcon;
private Image osMobileBackground;
Vector listaAberta;
List list;
ListModel model;
Os os = new Os();
Form formLista;
Form formDetalhe;
private Command voltar = new Command("Voltar", 1);
private Command detalharListaOSAberta = new Command("Detalhar", 0);
private Command atenderOsAberta = new Command("Atender OS", 0);
public Listar_OsAberta() {
super("Listagem OS Aberta");
model = new DefaultListModel();
list = new List(model);
//NAO ESQUECER DE TIRAR ESSE METODO QUANDO FAEZR INTEGRACAO COM O XML
Os.gerarDadosParaTesteAberta();
Os.gerarDadosParaTesteAberta1();
listaAberta = os.listarOSEmAberta();
for (int i = 0; i < listaAberta.size(); i++) {
Os objetoOs = (Os) listaAberta.elementAt(i); //obtem as instancias do banco
model.addItem(objetoOs.getCod() + " - " + objetoOs.getDescricao());
}
}
public Form CreateForm() {
formLista = new Form();
try {
osMobileIcon = Image.createImage("/osMobilePequeno.png");
osMobileBackground = Image.createImage("/backgroundCompleto.png");
} catch (Exception e) {
System.out.println("Erro ao adicionar a imagem : " + this.getClass());
}
//formListar = new Form("Listagem OS Aberta");
formLista.setLayout(new BorderLayout());
formLista.setBgImage(osMobileBackground);
formLista.addCommandListener(this);
//formListar.getTitleStyle().setBgColor(0xff8040);
Label ImagemLabel = new Label(osMobileIcon);
formLista.addComponent(BorderLayout.NORTH, ImagemLabel);
formLista.addCommand(voltar);
formLista.addCommand(detalharListaOSAberta);
formLista.addComponent(BorderLayout.CENTER, list);
return formLista;
}
public Form CreateFormDetalhe() {
formDetalhe = new Form();
try {
osMobileIcon = Image.createImage("/osMobilePequeno.png");
osMobileBackground = Image.createImage("/backgroundCompleto.png");
} catch (Exception e) {
System.out.println("Erro ao adicionar a imagem : " + this.getClass());
}
//formListar = new Form("Listagem OS Aberta");
formDetalhe.setLayout(new BorderLayout());
formDetalhe.setBgImage(osMobileBackground);
mostrarDados();
formDetalhe.addCommandListener(this);
//formListar.getTitleStyle().setBgColor(0xff8040);
Label ImagemLabel = new Label(osMobileIcon);
formDetalhe.addComponent(BorderLayout.NORTH, ImagemLabel);
formDetalhe.addCommand(voltar);
formDetalhe.addCommand(atenderOsAberta);
return formDetalhe;
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == voltar) {
OpenWindow.showMenu();
} else if (e.getSource() == detalharListaOSAberta) {
os = (Os) listaAberta.elementAt(model.getSelectedIndex());
CreateFormDetalhe().show();
}
}
public void mostrarDados( ){
TextArea dados = new TextArea("Verificar a Os Detalhada \n" +
"Cod: " + os.getCod() +
"\n Cliente: "+ os.getCliente().getNome() +
"\n Telefone: " + os.getCliente().getTelefone()+
"\n Data: " + os.getDataAbertura()+
"\n Status: " + os.getStatus() +
"\n Descricao da Os:\n" + os.getDescricao()+
"");
dados.setEditable(false);
dados.setEnabled(true);
formDetalhe.addComponent(BorderLayout.CENTER, dados);
}
Meu Metodo de Listar!
//metodo de listar OS Em Aberta
public Vector listarOSEmAberta() {
ObjectSet ose = null;
//Gera um filtro
EmAbertaFilter filtro = new EmAbertaFilter();
Vector listarOSEmAberta = new Vector();
try {
ose = PersistableManager.getInstance().find(Os.class, filtro, null);
for (int i = 0; i < ose.size(); i++) {
Os objetoOs = (Os) ose.get(i); //obtem as instancias do banco
listarOSEmAberta.addElement(objetoOs);
}
} catch (FloggyException ex) {
listarOSEmAberta.addElement("Erro list record");
}
return listarOSEmAberta;
}
[quote=maxdavis]Pessoal eu tenho um metodo de busca usando o floggy e tenho uma lista q uso o LWUIT para as minhas views, sendo oq ta acontencendo q eu nao estou conseguindo pegar o item desta lista, toda vez q tento pegar ele sempre mim traz o primeiro da lista. PORFAVOR HELP!!! :oops:
AGRADECO TODOS VCS DESDE JA
AKI EU CHAMO MEU METODO DE CONSULTAR
public void actionPerformed(ActionEvent e) {
if(e.getSource() == voltar){
OpenWindow.showMenu();
} else if (e.getSource() == consultarDadosAberta) {
//TENTO PEGAR O ID AKI
int id = list.getSelectedIndex();
Os pegarOs = new Os();
try {
pegarOs = os.consultarDadoAberta(id);
System.out.println(pegarOs);
} catch (FloggyException ex) {
ex.printStackTrace();
}
OpenWindow.showDetalheAberta();
}
MEU FORM ONDE EU TRAGO A LISTA
public Form CreateForm(){
try {
osMobileIcon = Image.createImage("/osMobilePequeno.png");
osMobileBackground = Image.createImage("/backgroundCompleto.png");
} catch (Exception e) {
System.out.println("Erro ao adicionar a imagem : " + this.getClass());
}
//formListar = new Form("Listagem OS Aberta");
this.setLayout(new BorderLayout());
this.setBgImage(osMobileBackground);
this.addCommandListener(this);
//formListar.getTitleStyle().setBgColor(0xff8040);
Label ImagemLabel = new Label(osMobileIcon);
this.addComponent(BorderLayout.NORTH ,ImagemLabel);
this.addCommand(voltar);
this.addCommand(consultarDadosAberta);
this.addCommand(deletarDadoEscolhido);
ListModel model = new DefaultListModel(os.listarOSEmAberta());
list.setModel(model);
this.addComponent(BorderLayout.CENTER,list);
return this;
}
MEU METODO DE CONSULTAR ONDE EU PASSO ID COMO PARAMENTRO
[code]
//consultar um dado e detalhar
public Os consultarDadoAberta(int id) throws FloggyException {
Os osbjeto = new Os();
try {
PersistableManager.getInstance().load(osbjeto, id);
System.out.println(osbjeto.toString());
} catch (FloggyException e) {
}
return osbjeto;
}
[/code][/quote]
e performance? Estou usando um código semelhante, mas estou sofrendo com problemas de performance.
Eu fiz alguns testes com vetores diferentes, mais específicos, para melhorar a performance e adiantou. Em vez de consultar um vetor só “único”, separei em vários vetores por categoria. Claro que uma consulta no geral (em todos juntos) ainda demora.