Исправить поведение @android:id/пусто в ListFragment

Я использую курсор в ListFragment с представлениями ListView @android:id/list и TextView @andoid:id/empty. Теперь, поскольку незакрытый курсор использует большую производительность akku, я хочу закрыть курсор, когда начинаю новое действие. я поместил cursor.close() в onPause() ListFragment.

Проблема в том, что когда курсор закрыт, TextView отображается в течение короткого времени, прежде чем начнется новое действие. Это выглядит некрасиво и вызывает небольшую задержку раньше.

Я пробовал что-то вроде этого:

if (cursor.moveToNext()){
        tv = (TextView) getActivity().findViewById(android.R.id.empty);
        tv.setVisibility(View.GONE);
    }

Но это ничего не изменило. Даже если отображаемый текст исчезнет, ​​я думаю, задержка останется...

У вас, ребята, есть хороший способ решить проблему?

заранее спасибо

галька


Мой курсор:

 public void loadCursor(){
    cursor = getActivity().getContentResolver().query(ProgressContentUri, new String[]{Table.Columns._ID, Table.Columns.NAME, Table.Columns.DATE}, "", null, Table.Columns.DATE+ " DESC");        
}

person pebbles    schedule 02.02.2015    source источник
comment
Как получить курсор? Из загрузчика курсора?   -  person NitroG42    schedule 02.02.2015
comment
Из contextProvider я разместил курсор в теме.   -  person pebbles    schedule 02.02.2015


Ответы (1)


Вы можете либо попытаться закрыть его в методе onStop вашего фрагмента, либо использовать CursorLoader, гораздо лучший способ использовать курсоры.

Таким образом, курсор будет загружаться асинхронно и закрываться автоматически.

person NitroG42    schedule 07.02.2015
comment
Спасибо. плохо читать в CursorLoader и попробовать в ближайшие дни! - person pebbles; 13.02.2015