Listview não atualizando após atualização do banco de dados e adapter.notifyDataSetChanged ();

Eu estava navegando na net por dois dias e tentei um monte de coisas, mas não consigo descobrir o que está errado com isso.

Eu ainda sou relativamente novo no desenvolvimento do Android, então eu provavelmente perdi algo óbvio.

Eu tenho um aplicativo que está usando um banco de dados sqllite para armazenar alguns dados e para o porpose desta prova de conceito exibindo isso em um listview. Eu posso adicionar itens à lista, excluí-los.

Por enquanto, tudo bem. O problema que tenho é quando eu, em vez de excluir, atualizo uma coluna no banco de dados chamada "excluída" e a defino como 1 e, em seguida, tenho o adaptador para atualizar a lista. Parece não funcionar.

Se eu usar a instrução de exclusão, isso funciona. Ele atualiza e está tudo bem, mas eu quero ter os itens excluídos no banco de dados, mas não mostrá-los (Então, basicamente "escondendo" itens)

Se eu verificar o banco de dados, a atualização em si é bem-sucedida, a coluna muda e tudo, então eu acho que é um problema de atualização porque o adaptador não faz uma consulta ao banco de dados ou algo nesse sentido

Carregador do Listview:

public void fillData() {

    if(lw.getAdapter() == null){
        // Fields from the database (projection)
        // Must include the _id column for the adapter to work
        String[] from = new String[] { TodoTable.COLUMN_SUMMARY, TodoTable.COLUMN_ID};
        String where = TodoTable.COLUMN_DELETED + " = ?";


        Cursor cursor = getContentResolver().query(TodoContentProvider.CONTENT_URI,from,where,new String[] {"0"},null);
        // Fields on the UI to which we map
        int[] to = new int[] { R.id.label };

        adapter = new SimpleCursorAdapter(this, R.layout.todo_row, cursor, from,
                to, 0);
        Log.v("Count",Integer.toString(cursor.getCount()));
        lw.setAdapter(adapter);
    }
    else
        adapter.notifyDataSetChanged();
    }

Excluir functon

@Override
public boolean onContextItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case DELETE_ID:
            /* Code for actual delete
            AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item
                    .getMenuInfo();
            Uri uri = Uri.parse(TodoContentProvider.CONTENT_URI + "/"
                    + info.id);
            getContentResolver().delete(uri, null, null);
            fillData();
            */

            /* Code for update and hide */
            AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item
                    .getMenuInfo();
            Uri uri = Uri.parse(TodoContentProvider.CONTENT_URI + "/"
                    + info.id);
            ContentValues values = new ContentValues();
            values.put(TodoTable.COLUMN_DIRTY, 1);
            values.put(TodoTable.COLUMN_DELETED, 1);
            getContentResolver().update(uri,values,null,null);
            fillData();
            return true;
    }
    return super.onContextItemSelected(item);
}

se eu colocar um log na função de consulta do ContentProvider, ele não será disparado.

Alguma sugestão sobre como descobrir isso?

Se eu usaradapter.swapCursor(cursor); funciona bem só não sei se esta é a maneira correta de fazer isso.

public void fillData() {

    // Fields from the database (projection)
    // Must include the _id column for the adapter to work
    String[] from = new String[] { TodoTable.COLUMN_SUMMARY, TodoTable.COLUMN_ID};
    String where = TodoTable.COLUMN_DELETED + " = ?";

    Cursor cursor = getContentResolver().query(TodoContentProvider.CONTENT_URI,from,where,new String[] {"0"},null);

    // Fields on the UI to which we map
    int[] to = new int[] { R.id.label };

    if(lw.getAdapter() == null){
        adapter = new SimpleCursorAdapter(this, R.layout.todo_row, cursor, from,
                to, 0);
        Log.v("Count",Integer.toString(cursor.getCount()));
        lw.setAdapter(adapter);
    }
    else
    {
        adapter.swapCursor(cursor);
    }
}

Ty pela ajuda

questionAnswers(2)

yourAnswerToTheQuestion