[ Resolvido ] Navegação de registros com ArrayList

Caros colegas, estou com dúvida em relação a fazer a navegação dos registros sendo que se encontram num arraylist.

Este métodos recuperam os dados do banco:

1: na classe DAO

public static ArrayList<UsuarioModel> RecuperarObjetos(String filtro){ ResultSet dados = GetUsuarioBD(filtro); ArrayList<UsuarioModel> listausuarios = new ArrayList<UsuarioModel>(); try{ while(dados.next()){ UsuarioModel user = new UsuarioModel(); user.setCodigo(dados.getInt("codigo")); user.setNome(dados.getString("nome")); user.setLogin(dados.getString("login")); user.setSenha(dados.getString("senha")); listausuarios.add(user); } }catch(SQLException erro){ JOptionPane.showMessageDialog(null, "Erro no método: RecuperarObjetos\n"+erro+"\n"+erro.getMessage()); }catch(NullPointerException erro){ return listausuarios; } return listausuarios; }

[code]private static ResultSet GetUsuarioBD(String swhere){
Connection con = (Connection) FabricaConexao.getConexao();
ResultSet rst = null;
String sql = "select * from usuario where codigo > 0 " +swhere;

    try{
        PreparedStatement stm = con.prepareStatement(sql);
        rst = stm.executeQuery();
    }catch(SQLException erro){ 
        JOptionPane.showMessageDialog(null, "Erro no método: GetUsusarioBD()\n"+erro+"\n"+erro.getMessage());
    }
    return rst;                
}[/code]

2: na classe controller

[code]public static ArrayList RecuperarUsuarios(){
ArrayList lista = UsuarioDAO.RecuperarObjetos("");

    if(lista.isEmpty())
        return null;
    return lista;
}[/code]

Portanto na classe view sei que a cada posição da lista retornada preciso setar os campos da interface, mas não estou conseguindo ver a forma de fazer com que a cada clique seja avançar ou retornar nesta lista.

Se puderem me dar umas dicas de como fazer ou mesmo uma outra forma mais prática de ser feita.

Obrigado pela atenção.

[quote=marcos@marcos]
Portanto na classe view sei que a cada posição da lista retornada preciso setar os campos da interface, mas não estou conseguindo ver a forma de fazer com que a cada clique seja avançar ou retornar nesta lista.

Se puderem me dar umas dicas de como fazer ou mesmo uma outra forma mais prática de ser feita.

Obrigado pela atenção.[/quote]

Boa tarde marcos, tudo bem?

Você precisa setar um número inteiro com o valor do índice atual. Assim, conforme você avança, adiciona uma unidade no inteiro, isso até o limite do total de itens. Para retroceder, vai reduzir uma unidade, até que o inteiro chegue a 0. Segue uma pequena ideia.

	Integer atual = 0; // Salva o valor que esta exibindo
	
	public UsuarioModel avanca() {
		atual++;
		return lista.get(atual);
		
	}
	public UsuarioModel retrocede() {
		atual--;
		return lista.get(atual);
	}

No evento do clique do botão você tem que tratar o erro caso atual == 0 ou atual == lista.size();

Espero ter lhe ajudado.
Abraços

Valeu, muito obrigado!

Ajudou demais da conta.