[ Resolvido ] Navegação de registros com ArrayList

2 respostas
marcos3

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;
    }
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;                
    }
2: na classe controller
public static ArrayList<UsuarioModel> RecuperarUsuarios(){
        ArrayList<UsuarioModel> lista = UsuarioDAO.RecuperarObjetos("");
        
        if(lista.isEmpty())
            return null;
        return lista;
    }
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.

2 Respostas

S

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.

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

marcos3

Valeu, muito obrigado!

Ajudou demais da conta.

Criado 16 de novembro de 2014
Ultima resposta 23 de nov. de 2014
Respostas 2
Participantes 2