Deletar Reg (RecordStore)

Ola, sera que alguem pode por favor me explicar por que q para deletar um registro do RecorStore eu tenho que fazer assim :

int indice = lstNomes.getSelectedIndex(); rsNomes.deleteRecord(Integer.parseInt(vetIds.elementAt(indice).toString()));

porque nao pode ser assim ?

int indice = lstNomes.getSelectedIndex(); rsNomes.deleteRecord(indice)

por que tem que utilizar o vetor vetIds ?

[quote=Rafael Oliveira da Silva]Ola, sera que alguem pode por favor me explicar por que q para deletar um registro do RecorStore eu tenho que fazer assim :

int indice = lstNomes.getSelectedIndex(); rsNomes.deleteRecord(Integer.parseInt(vetIds.elementAt(indice).toString()));

porque nao pode ser assim ?

int indice = lstNomes.getSelectedIndex(); rsNomes.deleteRecord(indice)

por que tem que utilizar o vetor vetIds ?[/quote]

Pelo seu comentário nota-se que o código não foi feito por você.
A resposta da tua pergunta está ou com o programador que fez, e ele pode te explicar, ou com você, ao estudar melhor a aplicação e ver daonde é criado o vetor. De qualquer forma isto é algo particular a sua aplicação.

Não há problema nenhum de se fazer de ambos os modos. Prefiro o segundo por ser mais limpo e inclusive permitir que em modo de teste, eu uso o System.out.println para exibir o valor da variável, antes da chamada do método.

É um erro comum isso, e a resposta é simples: Pq vc não pode garantir que o índice do ítem selecionado na lista é o mesmo recordId do registro no RecordStore.
Os id’s do RecordStore são incrementais e imutáveis. Uma vez atribuido um id a um registro, não há como vc alterá-lo.

Ex: Você inseriu 3 registros no seu recordStore.

[1] = a
[2] = b <--- removeu
[3] = c

Você removeu o registro 2.
Você carregou os registros na lista novamente, e sua lista ficou assim:

[0] = a
[1] = c

Como vc sabe que o item 1 © tem o id 3 ?

O vetor de id’s é uma das estratégias possíveis para descobrir isso.

[quote=chicobento]É um erro comum isso, e a resposta é simples: Pq vc não pode garantir que o índice do ítem selecionado na lista é o mesmo recordId do registro no RecordStore.
Os id’s do RecordStore são incrementais e imutáveis. Uma vez atribuido um id a um registro, não há como vc alterá-lo.

Ex: Você inseriu 3 registros no seu recordStore.

[1] = a
[2] = b <--- removeu
[3] = c

Você removeu o registro 2.
Você carregou os registros na lista novamente, e sua lista ficou assim:

[0] = a
[1] = c

Como vc sabe que o item 1 © tem o id 3 ?

O vetor de id’s é uma das estratégias possíveis para descobrir isso.

[/quote]

opaa era o que eu desconfiava msm…
valeuu cara obrigado po explicar inclusive com exemplo obrigado

[quote=Rafael Oliveira da Silva][quote=chicobento]É um erro comum isso, e a resposta é simples: Pq vc não pode garantir que o índice do ítem selecionado na lista é o mesmo recordId do registro no RecordStore.
Os id’s do RecordStore são incrementais e imutáveis. Uma vez atribuido um id a um registro, não há como vc alterá-lo.

Ex: Você inseriu 3 registros no seu recordStore.

[1] = a
[2] = b <--- removeu
[3] = c

Você removeu o registro 2.
Você carregou os registros na lista novamente, e sua lista ficou assim:

[0] = a
[1] = c

Como vc sabe que o item 1 © tem o id 3 ?

O vetor de id’s é uma das estratégias possíveis para descobrir isso.

[/quote]

opaa era o que eu desconfiava msm…
valeuu cara obrigado po explicar inclusive com exemplo obrigado[/quote]

soh mais uma duvida

quando eu fasso isso abaixo utilizando um while o vetor vetIds recebe apenas os id ? ou ele recebe os id e os registros tb ?

id = reNomes.nextRecordId(); vetIds.addElement(""+id);

Cara, vc não tá lendo a documentação. Lá diz que é só os IDs…

Pô, esta dúvida aqui bastava vc ter consultado o javadoc da classe RecordStore e olhar o método nextRecordId… :?

Ele recebe só o id. Para recuperar o registro, utilize o método getRecord

Não entendi o pq de concatenar “” com o id. Ao invés de utilizar vector, vc pode utilizar um vetor de int simples, ou então adicionar o recordId como um inteiro mesmo.

Ex:

   id = reNomes.nextRecordId(); 
   vetIds.addElement(new Integer(id));
   byte[] registro = reNomes.getRecord(id);

[editado]
Mais em: http://java.sun.com/javame/reference/apis/jsr118/
[/editado]

[]'s

[quote=boone][quote=Rafael Oliveira da Silva]
quando eu fasso isso abaixo utilizando um while o vetor vetIds recebe apenas os id ? ou ele recebe os id e os registros tb ?

id = reNomes.nextRecordId(); vetIds.addElement(""+id);
[/quote]

Cara, vc não tá lendo a documentação. Lá diz que é só os IDs…

Pô, esta dúvida aqui bastava vc ter consultado o javadoc da classe RecordStore e olhar o método nextRecordId… :? [/quote]

eu li a documentação sim

mais minha duvida nao é sobre a varivel id, pois isso está claro que a a varia id recebe apenas os ids
a duvida e sobre o vetor vetIds.addElement pois é passado dois parametros para ele "" e o id porisso surgiu a duvida

c vc diz que é soh os id pois entao c o vetIds.addElement recebe apenas os id por que disso —> b[/b] porque nao seria apenas assim —>b[/b] ???

[quote=chicobento][quote=Rafael Oliveira da Silva]
soh mais uma duvida

quando eu fasso isso abaixo utilizando um while o vetor vetIds recebe apenas os id ? ou ele recebe os id e os registros tb ?

id = reNomes.nextRecordId(); vetIds.addElement(""+id);
[/quote]

Ele recebe só o id. Para recuperar o registro, utilize o método getRecord

Não entendi o pq de concatenar “” com o id. Ao invés de utilizar vector, vc pode utilizar um vetor de int simples, ou então adicionar o recordId como um inteiro mesmo.

Ex:

   id = reNomes.nextRecordId(); 
   vetIds.addElement(new Integer(id));
   byte[] registro = reNomes.getRecord(id);

[editado]
Mais em: http://java.sun.com/javame/reference/apis/jsr118/
[/editado]

[]'s[/quote]

ahh tah entendi, o codigo nao eh meu .
eu tb nao entendi o pq das ""
mais agora ficou claro
mais uma vez obrigado pela resposta