[RESOLVIDO] Atualizar dados apos excluir registro de ListView

3 respostas
pvrsouza

Galera,

Estou tentando excluir um item de uma ListView usando um SimpleAdapter e quando exclui não estou conseguindo atualizar a tela. Gostaria de uma dica de voces.

Vejam como estou fazendo e nao está funcionando:

//imports suprimidos
public class CadastrarNotas extends Activity {

    private BaseAdapter adapter;
    private Avaliacao avaliacao;
    private ListView listView;
    private ArrayList<Avaliacao> listaAvaliacoes;
    private ArrayList<HashMap<String, String>> listaChaves = new ArrayList<HashMap<String, String>>();
   

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

//codigo suprimido

            listaAvaliacoes = new ArrayList<Avaliacao>();
       
//codigo suprimido
                listaAvaliacoes.add(avaliacao);
                adcionaLinhaLista(avaliacao);
                adapter = new SimpleAdapter(this, listaChaves,
                        R.layout.linha_avaliacao, new String[]{KEY_AVALIACAO,
                                KEY_NOTA, KEY_PESO, KEY_PONTOS}, new int[]{
                                R.linha.avaliacao, R.linha.nota, R.linha.peso,
                                R.linha.pontos});
                listView.setAdapter(adapter);
                eventosListView();

            }
        }

    }

    private void eventosListView() {
        listView.setOnItemClickListener(new OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                    long arg3) {

                Toast.makeText(CadastrarNotas.this, "nome" + arg2,
                        Toast.LENGTH_SHORT).show();
                
                /*
                 * É aqui que o código nao tá funcionando.
                 */
                listaAvaliacoes.remove(arg2);
                
                BaseAdapter adapter = (BaseAdapter) listView.getAdapter();
                adapter.notifyDataSetChanged();
            }
        });
    }
}

3 Respostas

Marky.Vasconcelos

Voce precisa modificar a lista do adapter e chamar notifyDataSetChanged().

PS: Tem muito codigo para ler, tente postar só as partes relevantes para ajudar aqueles que querem te ajudar.

pvrsouza

Marky.Vasconcelos:
Voce precisa modificar a lista do adapter e chamar notifyDataSetChanged().

PS: Tem muito codigo para ler, tente postar só as partes relevantes para ajudar aqueles que querem te ajudar.

Realmente tinha muito código. Foi mal. :slight_smile:

Agora Marky, eu nao entendi quando vc falou que eu devo modificar a lista.

pvrsouza

Consegui fazer galera, o problema tava no fato de que eu nao tava excluido tb a minha lista de HasMap. Adicionei a remoção dele no método e foi:

private void eventosListView() {
        listView.setOnItemClickListener(new OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                    long arg3) {

                listaAvaliacoes.remove(arg2);
                listaChaves.remove(arg2);
                adapter.notifyDataSetChanged();
                
                Toast.makeText(CadastrarNotas.this, "nome" + arg2,
                        Toast.LENGTH_SHORT).show();
            }
        });
    }
Criado 20 de julho de 2011
Ultima resposta 21 de jul. de 2011
Respostas 3
Participantes 2