2015-02-02 6 views
0

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

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

Ive пытался что-то вроде этого:

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

Но это ничего менять вратаря. Даже если показанное текстовое изображение исчезло, задержка осталась бы догадаться ...

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

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

галька


Мой Cursor:

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

Как вы получаете курсор? Из загрузчика курсора? – NitroG42

+0

Из контекстного оператора я отправил курсор в тему. – pebbles

ответ

0

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

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

+0

спасибо. плохо читайте в CursorLoader и попробуйте его в комины! – pebbles