Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Dúvida Aula 5 - Atualização da lista do cadastro

O erro ocorre quando transfiro o "popular minha lista" no metodo onCreate para o onResume.

A linha de código que da erro é a

"lista.setAdapter(adapter);"

Código da Classe abaixo


package br.com.cadastro;

import java.util.List;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemLongClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
import br.com.cadastro.dao.AlunoDAO;
import br.com.cadastro.modelo.Aluno;

public class ListaAlunoActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.listagem_alunos);

        ListView lista = (ListView) findViewById(R.id.lista);



        lista.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> adapter, View view, int posicao, long id) {
                // TODO Auto-generated method stub
                Toast.makeText(ListaAlunoActivity.this, "a posição é " + posicao, Toast.LENGTH_SHORT).show();
            }

        });

        lista.setOnItemLongClickListener(new OnItemLongClickListener() {

            @Override
            public boolean onItemLongClick(AdapterView<?> adapter, View view, int posicao, long id) {
                Toast.makeText(ListaAlunoActivity.this, "Aluno clicado é " + adapter.getItemIdAtPosition(posicao),
                        Toast.LENGTH_SHORT).show();

                return true;
            }
        });
    }

    @Override
    protected void onResume() {

        super.onResume();
        Log.i("CICLO DE VIDA", "onResume");

        //ListView lista = (ListView) findViewById(R.id.lista);
         AlunoDAO dao = new AlunoDAO(this);

        List<Aluno> alunos = dao.getLista();

        ArrayAdapter<Aluno> adapter = 
         new ArrayAdapter<Aluno>(this, android.R.layout.simple_list_item_1, alunos);


        lista.setAdapter(adapter);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_lista_alunos, menu);
        return super.onCreateOptionsMenu(menu);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {

        switch (item.getItemId()) {
        case R.id.novo:
        Intent irParaFormulario =    new Intent(this, FormularioActivity.class);
        startActivity(irParaFormulario);

            break;

        default:
            break;
        }

        return super.onOptionsItemSelected(item);
    }
}
1 resposta
solução!

Davi olá ! Como está ?

Bom, pelo que vi, ele não está achando a referencia para a listview no seu onresume, o que resulta em erro ao ser chamado, contudo é bem simples de resolver ! Tenta fazer da seguinte forma :

Deixa o ListView como atributo da classe, no método onCreate você atribui um valor para ele atráves do findViewById e no onResume você mantem da forma que está, por enquanto.


public class ListaAlunosActivity extends Activity {

    private ListView listaAlunos;

    @Override
    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.listagem_alunos);

        listaAlunos =(ListView) findViewById(R.id.lista);

        // resto do código omitido

    }

    @Override
    public void onResume(){
        super.onResume();

        AlunoDAO dao = new AlunoDAO(this);

            List<Aluno> alunos = dao.getLista();

        dao.close();

            ArrayAdapter<Aluno> adapter = new ArrayAdapter<Aluno>(this, android.R.layout.simple_list_item_1, alunos);


        listaAlunos.setAdapter(adapter);

    }
}

Espero ter ajudado

Abraços