ListView vazio se SimpleCursorAdapter fechado ()

Eu tenho um problema para entender por que meu ListActivity e seu correspondenteexibição de list vazio quando ligo parafechar( método emcurso objeto?

Deixe-me explicar um pouco ...

Recupero alguns valores de um banco de dados e obtenho o resultado no meu objeto cursor. Depois disso, crio meu SimpleCursorAdapter e vincule a coluna do db com um campo no meuexibição de list.

Funciona como um encanto, mas ...

Se eu ligar cursor.close () no fim deonCreate () método meu listView é mostrado vazio?

Se eu registrar os valores do cursor no LogCat, eles estarão lá até chamar cursor.close () e isso faz todo o sentido, mas por que o listAdapter é esvaziado quando cursor.close () é chamado??? Eu esperariaListAdapter listAdapter = new SimpleCursorAdapter (...) para manter os valores "ligados" a umexibição de list até que a atividade seja destruída ...

Porque isto é assim? Quando e por que é necessário fechar o cursor?

public class ListTrainingsView extends ListActivity{
private SQLiteDatabase db;
private ListAdapter  listAdapter;
private Cursor cursor;

@Override
public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.list_trainings);

    DatabaseHelper helper = new DatabaseHelper(this);

    this.db = helper.getWritableDatabase();

    this.cursor = db.query("trainings", fields, null, null, null, null, null);

    startManagingCursor(cursor);

    this.listAdapter = new SimpleCursorAdapter(this,
            R.layout.list_trainings_item, 
            cursor, 
            new String[] {"name"},
            new int[] { R.id.name_entry}
    );

    this.setListAdapter(this.listAdapter);

//If I call 
//cursor.close();
//shown list is empty

Outra pergunta é mais sobre o tipo básico de linguagem Java ... Eu venho do PHP OO background e lá, se você definir a variável membro, precisará trabalhar com ela nos métodos de objeto usando a sintaxe $ this-> cursor. Percebi que no Android / Java não preciso usar this.cursor.getCount () para obter a referência / valor dele. Basta dizer cursor.getCount () Como isso é permitido?

questionAnswers(2)

yourAnswerToTheQuestion