Устаревший конструктор SimpleCursorAdapter

Насколько я понимаю, один из конструкторов SimpleCursorAdapter устарел. Следующий конструктор является правильным для использования:

SimpleCursorAdapter(Context context, int layout, Cursor c, String[] from, int[] to, int flags)

Может кто-нибудь объяснить мне, что это за последний параметр и что я должен туда поместить?

У меня есть метод, который использует SimpleCursorAdapter и заполняет файл пользовательского макета данными:

    public void populateListView(){
    Cursor cursor = myDB.getAllRows();
    String[] fromFieldNames = new String[] {DBAdapter.KEY_NAME,DBAdapter.KEY_NUMBER,DBAdapter.KEY_EMAIL};
    int[] toViewIDs = new int[] {R.id.customRowContactName,R.id.customRowContactNumber,R.id.customRowRowEmail};

    SimpleCursorAdapter cursorAdapter;
    cursorAdapter = new SimpleCursorAdapter(getActivity(),R.layout.contacts_custom_row,cursor,fromFieldNames,toViewIDs,WHAT DO I PLACE HERE);

    myList = (ListView)view.findViewById(R.id.listViewFragment);
    myList.setAdapter(cursorAdapter);
}

Я пока поставил 1, чтобы избавиться от синтаксической ошибки, но не уверен, как это повлияет на мою программу.


person Mark F    schedule 27.02.2016    source источник


Ответы (2)


Согласно документам:

int: флаги, используемые для определения поведения адаптера.

Эти флаги используются для определения того, как CursorAdapter должен отслеживать изменения содержимого (данные были добавлены или удалены в базе данных).

Кажется, вы можете выбрать один из флагов ниже. Однако один из них устарел, и вам следует избегать их.

Если вы не хотите отслеживать изменения вашего контента, отправьте 0.

Если вы хотите отслеживать какие-либо изменения, используйте 2 (вам нужно больше искать, как его использовать)

Значение 0

Согласно этому и это, вы можете отправить 0, и вы курсор не будет отслеживать ваш контент на предмет изменений.

Значение 1

public static final int CursorAdapter.FLAG_AUTO_REQUERY Значение константы: 1 (0x00000001)

Добавлено на уровне API 11. Эта константа устарела на уровне API 11. Этот параметр не рекомендуется, так как он приводит к тому, что запросы курсора выполняются в потоке пользовательского интерфейса приложения, что может привести к снижению скорости отклика или даже к ошибкам «Приложение не отвечает». В качестве альтернативы используйте LoaderManager с CursorLoader.

Если установлено, адаптер будет вызывать requery() для курсора всякий раз, когда доставляется уведомление об изменении содержимого. Подразумевается FLAG_REGISTER_CONTENT_OBSERVER.

Значение 2

public static final int CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER Постоянное значение: 2 (0x00000002)

Добавлено на уровне API 11. Если установлено, адаптер зарегистрирует наблюдатель содержимого на курсоре и вызовет onContentChanged() при поступлении уведомления. Будьте осторожны при использовании этого флага: вам нужно будет отключить текущий курсор от адаптера, чтобы избежать утечек. благодаря своим зарегистрированным наблюдателям. Этот флаг не требуется при использовании CursorAdapter с CursorLoader.

person W0rmH0le    schedule 27.02.2016

Флаги, используемые для определения поведения адаптера; может быть любой комбинацией FLAG_AUTO_REQUERY и FLAG_REGISTER_CONTENT_OBSERVER. Попробуйте это, это было взято с сайта разработчиков Google.

person Ashwin Mothilal    schedule 27.02.2016