[Dúvida] Excluir registro usando Floggy

Olá pessoal.
Estou fazendo um pequeno sistema para celular apenas para aprendizado.
O sistema consiste em cadastrar atividades pendentes da faculdade,registrando a disciplina e o trabalho a ser feito,coisas do tipo.

Estou usando o Floggy para armazenar os registros.
Eu incluo uma atividade na memória e lista os registros atravéz de uma Lista.Portanto estou conseguindo inserir e ler os registros.

Segue o código de inclusão e leitura:

[size=18]Inserir:
[/size]
[code]} else if (command == cmSalvar) {
CadTrabalho atividade = new CadTrabalho();
atividade.setDisciplina(tfDisciplina.getString());
atividade.setDesc(tfDesc.getString());

            // Testa de que forma é a atividade ( Grupo ou Individual )
            if ( cgTipo.getSelectedIndex() == 0 )
                atividade.setTipo("Individual");
            else
                atividade.setTipo("Grupo");

            atividade.setIntegrantes(tfIntegrantes.getString());
            atividade.setDtEntrega(dfEntrega.getDate());

            atividade.salvar();
            getDisplay().setCurrent(listAtividade);

            try {
                listarAtividade();
                // write post-action user code here
            } catch (FloggyException ex) {
                ex.printStackTrace();
            }[/code]

[size=18]
Listar[/size]

[code] public void listarAtividade() throws FloggyException {
ObjectSet os = null;
getListAtividade().deleteAll(); //Limpa a lista

    try{
       os = PersistableManager.getInstance().findAll(CadTrabalho.class);
       for (int i = 0; i < os.count(); i++) 
            listAtividade.append( "Disciplina: " + ((CadTrabalho) os.get(i)).getDisciplina() +
                 "\nEntrega: " + ((CadTrabalho) os.get(i)).getDtEntrega(),null);
       
    }catch(FloggyException fe){
       fe.printStackTrace();
    }
}[/code]

Tudo acima esta funcionando.
Agora minha dúvida é:

" Como faço para excluir um registro escolhido ? Por exemplo,o usuário vai na lista,seleciona um registro qualquer e atravéz da opção “excluir” ele exclue o registro da memória ?

Tentei o código abaixo que fiz mas não da muito certo,rsrs :

[code] public void excluirAtividade(){
CadTrabalho atividade = new CadTrabalho();

    try {
        PersistableManager pm = PersistableManager.getInstance();
        pm.load(atividade, listAtividade.getSelectedIndex());
        
        pm.delete(atividade);

    } catch (FloggyException e) {

}[/code]

Obrigado

Abraços

Bom dia Henrique,

Você deve manter um segunda lista com os ids das entidades para poder carregá -las antes de excluí-las. O método getSelectedIndex() retorna o índice selecionado no componente de tela e não o id da entidade no sistema Floggy/RMS.

Um abraço

Olá,obrigado pela resposta amigo :smiley:

Quer dizer que o ID do componente List vai ser diferente do registrado na memória ? Achei que ele meio que ordenasse e ficasse semelhante a ordem que esta na memória,rsrs.Obrigado pelo toque.

Mas eu acho que vai ser meio estranho eu implementar isto né.Vai ser meio dificil eu casar o Index selecionado do componente com o ID do registro.
Acha melhor eu criar um campo do tipo código no cadastro ? Dai na hora de excluir eu dou um find em cima do código selecionado e logo em seguinda eu excluo,funciona isto ? Como posso proceder ?

Abraços e desculpa pelas perguntas,rsrs

EDITADO
O Lance do código que falei também não é a melhor solução pois terei que consultar o ultimo código e incrementar ,perco tempo e espaço com isto,rsrs

O detalhe é como eu saber qual é o registro que esta em foco na lista,ou seja, qual o ID do armazem de registros que ele representa.

UP
Alguem a implementou algo parecido ?

Abraços

[size=18]Solução[/size]

[code]
public void excluirAtividade(){
try {
// Variável criada para especificar qual elemento será excluído
Persistable excluir;

        PersistableManager pm = PersistableManager.getInstance();
        ObjectSet os = PersistableManager.getInstance().findAll(CadTrabalho.class);

        // Verifica se há registros na lista            
        if ( os.count() < 1){
            aviso = new Alert("Atenção", "Não há nenhuma atividade selecionada.", null, AlertType.ERROR);
            switchDisplayable(aviso, listAtividade);
            aviso.setTimeout(3000);
            return;
        }

        // Pego o index selecionado pelo usuário
        excluir = os.get(listAtividade.getSelectedIndex());

        //Exclusão
        pm.delete(excluir);
        
    } catch (FloggyException e) {
        System.out.println("Erro ao iniciar Função (excluirAtividade)");
    }
}[/code]

O código que fiz acima funcionou perfeitamente, ainda estou testando corretamente,criando novos itens e excluindo de forma aleatória.Pelo que percebi o index da lista bate com o index da memória.

Obrigado ae pessoal.
Se alguém observar algum erro,favor me avisar ,rsrs

Obrigado

Abraços

tipo eu consigo excluir os dados normalmente, mas o Floggy deixa uns registros j9rms no Palm que eu nao tenho esse controle, alguem tem alguma ideia como eu faria pra pegar esses j9rms?

agradeço

aproveitando o embalo alguem tem o metodo editar ??/??
to com dúvida nele e ta dificil entender a logica …

se alguem poder ajudar desde já agradeço.

cara pra editar eu fiz meio q um gato pra funfar,

na minha lista eu tinha os dados, cada dado tinha seu id, quando eu selecionava um e depois clicava em editar eu pegava esse id e depois setava os dados q eu queria pra mostrar na tela, quando fazia isso eu excluia o dado e retirei o comando voltar. Assim a unica opção era gravar os dados atualizados.

espero ter ajudado

vc cria tipo uma tabela com os atributos e um dos atributos era um cod do usuario (exemplo) e esse cod e setado com o id do usuario é isso???
manda o cod pra eu analizar … … .
flw;

[quote=Henrique_silva][size=18]Solução[/size]

[code]
public void excluirAtividade(){
try {
// Variável criada para especificar qual elemento será excluído
Persistable excluir;

        PersistableManager pm = PersistableManager.getInstance();
        ObjectSet os = PersistableManager.getInstance().findAll(CadTrabalho.class);

        // Verifica se há registros na lista            
        if ( os.count() < 1){
            aviso = new Alert("Atenção", "Não há nenhuma atividade selecionada.", null, AlertType.ERROR);
            switchDisplayable(aviso, listAtividade);
            aviso.setTimeout(3000);
            return;
        }

        // Pego o index selecionado pelo usuário
        excluir = os.get(listAtividade.getSelectedIndex());

        //Exclusão
        pm.delete(excluir);
        
    } catch (FloggyException e) {
        System.out.println("Erro ao iniciar Função (excluirAtividade)");
    }
}[/code]

O código que fiz acima funcionou perfeitamente, ainda estou testando corretamente,criando novos itens e excluindo de forma aleatória.Pelo que percebi o index da lista bate com o index da memória.

Obrigado ae pessoal.
Se alguém observar algum erro,favor me avisar ,rsrs

Obrigado

Abraços[/quote]

Olá Henrique_silva, td bem? Implantei sua solução e aparentemente está funcionando tudo OK.
O tópico está com um certo tempo, mas tenho uma dúvida parecida.

Pergunta: esse teu método excluirAtividade() exclui o registro do RMS igual ao índice selecionado no componente de tela? ele não apaga pelo id da entidade no sistema Floggy/RMS?
Você pega o indice (lista.getSelectedIndex() , por exemplo) e manda apagar o registro com o mesmo índice do Floggy?

e se você tiver a situação (pelo que o tmoreira2020 escreveu, isso é possível acontecer):
Lista
item1 (indice 0)
item2 (indice 1)
item3 (indice 2)

Floggy/RMS
registro1 (id 1)
registro2 (id 2)
registro3 (id 4)

Foi isso que entendi da sua solução, porém estou confuso ainda. Estou errado ao pensar dessa maneira?