Olá a todos.
Estou com um problema que está persisitindo a alguns dias. Não consigo exibir uma imagem em um List.MULTIPLE.
Estou postando o código e espero que possam me ajudar a resolver este problema.
Main
import java.io.IOException;
import java.util.Vector;
import javax.microedition.lcdui.*;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
public class Main extends MIDlet{
Display display;
public void destroyApp(boolean unconditional) throws MIDletStateChangeException {
}
public void pauseApp() {
}
public void startApp() throws MIDletStateChangeException {
display = Display.getDisplay(this);
Vector lista = new Vector();
try {
lista.addElement(new Produto(Image.createImage("/hp_16.png"), 310.00));
lista.addElement(new Produto(Image.createImage("/iphone_16.png"), 420.00));
lista.addElement(new Produto(Image.createImage("/lg_16.png"), 530.00));
lista.addElement(new Produto(Image.createImage("/nokia_16.png"), 640.00));
ProdutoList produto = new ProdutoList(this, lista);
display.setCurrent(produto);
} catch (IOException ex) {
ex.printStackTrace();
}
}
public void mudarTela(Displayable display){
this.display.setCurrent(display);
}
}
ProdutoList
import java.util.Vector;
import javax.microedition.lcdui.*;
import javax.microedition.midlet.MIDletStateChangeException;
public class ProdutoList extends List implements CommandListener{
private Main controlador;
private Vector produtos;
private Command fecharPedido, sair, info;
public ProdutoList(Main controlador, Vector lista) {
super("Lista de Produtos", List.MULTIPLE);
this.controlador = controlador;
this.produtos = lista;
setFitPolicy(List.TEXT_WRAP_ON);
for(int i=0; i < produtos.size(); i++){
Produto p = (Produto) produtos.elementAt(i);
append(new ImageItem("Imagem", p.getImagem(), Item.LAYOUT_LEFT, null) + " - " + p.getValor(), null);
}
sair = new Command("Sair", Command.EXIT, 0);
addCommand(sair);
fecharPedido = new Command("Fechar Pedido", Command.OK, 0);
addCommand(fecharPedido);
info = new Command("Info", Command.OK, 1);
addCommand(info);
setCommandListener(this);
}
public void commandAction(Command c, Displayable d) {
if(c == sair){
try {
controlador.destroyApp(true);
} catch (MIDletStateChangeException ex) {
ex.getMessage();
}
}else{
if(c == info){
}else{
boolean s[] = new boolean[size()];
getSelectedFlags(s);
for(int i=0;i<size();i++){
if(s[i])
produtos.addElement(getString(i));
}
for(int i=0; i < produtos.size();i++){
System.out.println(produtos.elementAt(i));
}
}
}
}
public void run(){
boolean s[] = new boolean[size()];
getSelectedFlags(s);
for(int i=0;i<size();i++){
if(s[i])
produtos.addElement(getString(i));
}
for(int i=0; i < produtos.size();i++){
System.out.println(produtos.elementAt(i));
}
}
}
Ele está exibindo uma String com o Objeto Image ao invés da imagem.
Agradeço a todos que responderem.
Obrigado.