Pessoal,
Estou com um problema um tanto quanto tosco aqui que está me dando nos nervos rsrsrsrs
É o seguinte estou deletando um record "rs.deleteRecord(1);" e a ação está sendo concluída com sucesso, o problema é a posição 1 fica vazia…
exemplo:
posição descrição
0 Maria
1 José
2 Marcio
3 Pedro
4 João
5 Lucas
nessa ocasião o rs.getNumRecords() é igual a 6
se eu deletar o item 1 por exemplo e mandar listar os registros
for (int i=1;i<=rs.getNumRecords(); i++) {
listaUsuarios.append(dao.getRecord(rs, i), null);
}
o resultado seria esse:
Maria
Marcio
Pedro
Joao
nessa ocasião o rs.getNumRecords() é igual a 5
como fazer para que quando eu deletar um registro a posição que ele estava realmente deixa de existir???
Cara,
Tenho pouca experiência nisso mas, parece a classe RecordStore cria uma valor único para cada registro, quando você apaga os valores não são reorganizado.
Tenta usar a classe RecordEnumeration.
Opa cara obrigado pela iniciativa, mas infelizmente acho que não posso usar o RecordEnumeration porque gravo meus dados da seguinte forma no recordStore
posição valor
1 Maria José
2 Rua das palmeiras, 110
3 Jd Horizonte
4 Augusto César
5 Avenida das Torres, 450
6 Jd Planalto
7 Mário Filho
8 Rua das aroeiras, 050
9 Jd Floresta
perceba que a cada 3 posições eu tenho um registro completo com (nome, endereço e bairro) se eu usar o RecordEnumeration ele vai organizar meus dados de forma que eu não vou conseguir recuperar meus registros de forma correta.
Tem alguma solução para meu problema???
Só vejo duas possibilidades:
-
Antes da função listaUsuarios.append(X) você deve testar o resultado de X e só inserir valores validos;
-
Você utiliza algo semelhante a função split() e insere os registros: nome|endereco|cidade. Depois é só usar o split e já dá para usar o RecordEnumeration.
valew evandro pela força,
Em conversa com um colega de trabalho descobri que não tem como apagar um registro como estava querendo fazer, por isso tive que usar do velho artificio da serialização e criei um método split para poder recuperar os valores.
segue o método caso alguém precise usá-lo no futuro.
public static String[] split(String texto, String separador){
Vector lista = new Vector();
String aux;
while(texto.indexOf(separador) > -1){
aux = texto.substring(0,texto.indexOf(separador));
texto = texto.substring(texto.indexOf(separador)+1);
lista.add(aux);
if(texto.indexOf(separador) == -1)
lista.add(texto);
}
String[] retorno = new String[lista.size()];
lista.copyInto(retorno);
return retorno;
}