Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Dúvida no Ex. 11 da Aula 5 - Persistência com SQLite - Classe AlunoActivity

Complementando minha dúvida anterior, será que se eu dividir a chamada do AlunoDAO e o dao.close() em onResume() e onPause() é o correto:

public class StudentsListActivity extends AppCompatActivity {

    private ListView list;
    private StudentDAO dao;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

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

        // moved to onResume() method

        list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapter, View view, int position, long id) {
                Toast.makeText(StudentsListActivity.this, "The position is: " + position, Toast.LENGTH_SHORT).show();
            }
        });

        list.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
            @Override
            public boolean onItemLongClick(AdapterView<?> adapter, View view, int position, long id) {
                Toast.makeText(StudentsListActivity.this, "Student clicked is: " + adapter.getItemAtPosition(position), Toast.LENGTH_SHORT).show();

                return true;
            }
        });
    }

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

        dao = new StudentDAO(this);
        List<Student> students = dao.getStudentsLists();

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

        list.setAdapter(adapter);
    }

    @Override
    protected void onPause() {
        super.onPause();

        dao.close();
    }

.

Agradeço desde já.

2 respostas
solução!

Ola André !

Dessa forma que você fez vai funcionar perfeitamente, mas temos um problema, a conexão com o banco ficará aberta até o onPause ser chamado. Isso pode ocasionar, dependendo da situação, alguma ruptura no banco. O aconselhável é que assim que você terminar de fazer o que queria no banco, logo já fechar a conexão.

Entendi, muito obrigado Matheus. :D