Я просматривал сеть в течение 2 дней allready и много пробовал, но не могу понять, что с этим не так.
Я до сих пор довольно новичок в разработке Android, поэтому я, вероятно, пропустил нечто очевидное.
У меня есть приложение, которое использует sqllite databse для хранения некоторых данных и для размещения этого Доказательства концепции, отображающего это в списке. Я могу добавить элементы в список, удалить их.
Пока все хорошо. Проблема заключается в том, что вместо того, чтобы удалять обновление столбца в базе данных с именем "deleted" и установить его на 1, а затем обновить список. Кажется, что это не сработало.
Если я использую оператор delete, он работает. Он обновляется, и все в порядке, но я хочу иметь удаленные элементы в базе данных, но не показывать их (так что "скрывать" элементы)
Если я проверю базу данных, то само обновление было успешно изменено и все, поэтому я думаю, что это проблема обновления, потому что адаптер не запрашивает базу данных или что-то в этом направлении
Listview Loader:
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();
    }
Удалить 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);
}
если я помещаю журнал в функцию запроса ContentProvider, он фактически не срабатывает.
Любые предложения о том, как это понять?
Если я использую adapter.swapCursor(cursor);, он отлично работает, просто не знаю, правильно ли это делается.
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 для справки
