salve salve galera…
Seguinte, como eu faço um dbnavigator usando ArrayList ?
Quero fazer algo como.
|<<(btn primeiro registro)
<(btn registro anterior)
(btn proximo registro)
|(btn ultimo registro)
Tentei usar o Iterator porem ainda naum tive resultados.
//aqui meu DAO
public List<Registros> consultaRegistros(){
List<Registros lista = new ArrayList();
PreparedStatement stm = this.con.prepareStatement("select * from tabela");
ResultSet rs = stm.executeQuery();
while(rs.next()){
Registros regs = new Registros();
//gets
lista.add(regs);
}
rs.close();
stm.close();
return lista;
}
//aqui minha lista com os registros q preciso
List<Registros> meusRegistros = registrosDAO.consultaRegistros();
Como fazer isso ?
obrigado
Vamos lá man…
Fiz um trechinho de código pra te ajudar… mas nesse eu estou usando um Javabeans chamado Item…
Esse é o POJO
package test;
public class Item {
private int codigo;
private String nome;
public Item() {
}
public Item(int codigo, String nome) {
this.codigo = codigo;
this.nome = nome;
}
public int getCodigo() {
return codigo;
}
public void setCodigo(int codigo) {
this.codigo = codigo;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
@Override
public String toString() {
return nome;
}
}
Essa é a classe que gerencia o DBNavigator
package test;
import java.util.List;
public class DBNavigatorDAO {
private List<Item> list;
private int index;
public DBNavigatorDAO(List<Item> list) throws Exception {
if (list.size() > 0) {
this.list = list;
index = 0;
} else {
throw new Exception("A lista deve conter ao menos 1 item");
}
}
public Item getFirstItem() {
index = 0;
return getCurrentItem();
}
public Item getLastItem() {
index = list.size() - 1;
return getCurrentItem();
}
public Item getNextItem() throws Exception {
if (getIndex() < list.size() - 1) {
index++;
return getCurrentItem();
} else {
throw new Exception("Este é o ultimo item");
}
}
public Item getPreviousItem() throws Exception {
if (getIndex() > 0) {
index--;
return getCurrentItem();
} else {
throw new Exception("Este é o primeiro item");
}
}
public int getIndex() {
return index;
}
private Item getCurrentItem() {
return list.get(index);
}
}
E essa é a classe de Test
package test;
import java.util.ArrayList;
import java.util.List;
public class MainDBNavigatorTest {
public static void main(String[] args) throws Exception {
List<Item> listItems = new ArrayList<Item>();
listItems.add(new Item(1, "Test1"));
listItems.add(new Item(2, "Test2"));
listItems.add(new Item(3, "Test3"));
DBNavigatorDAO dao = new DBNavigatorDAO(listItems);
System.out.println(dao.getFirstItem());
System.out.println(dao.getNextItem());
System.out.println(dao.getNextItem());
System.out.println(dao.getLastItem());
System.out.println(dao.getPreviousItem());
System.out.println(dao.getPreviousItem());
System.out.println(dao.getFirstItem());
}
}
O Funcionamento é simples… a classe DBNavigatorDAO controla o index interno do List… ao chamar O next ou previous , voce pode receber duas respostas:
Ou o objeto desejado… ou uma exceção dizendo que voce chegou ao limite da lista…
sendo assim tudo o que voce tem que fazer é um try-catch nesses botões.
Intéh man
Algumas classe de Collection tem Iterators com mais opções.
O ListIterator permite que você itere uma List nas duas direções, para frente e para trás.
Para ir para o primeiro é só usar o método get(0) da interface List e para pegar o último você pode usar get(tamanho da lista-1). Tamanho da lista pode ser recebido com o método size da classe Collections…
opa, obrigado galera…
achei um exemplo aqui de como fazer com ListIterator
http://www.devmanuals.com/tutorials/java/collections/iterator/ListIteratorInterface/
t+ e novamente, obrigado.