마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

cursor를 통한 listview를 구현했는데 listview갱신시 changeCursor를 사용하면 오류가 나옵니다

0 추천
cursor를 통한 listview를 구현했는데 listview갱신시 changeCursor를 사용하면 오류가 나옵니다.

cursoradaper 를 이용해서 listview를 구현했습니다.

문제는 db->array->listview 이렇게는 잘되는데

da->listview 하려니 리스트뷰갱신시에 문제가생깁니다.

    if (totalListNum >= nowListNum + 5) {
 
     int tmpEnd = nowListNum + 5;

     DBManager manager = DBManager.getInstance(getActivity());
     Cursor som2_cursor = manager.select("SELECT * " + "FROM "
       + TALKBOX_TABLE_NAME + " ORDER BY "
       + TALKBOX_REGTIME + " DESC LIMIT " + tmpEnd);
     if (som2_cursor != null && som2_cursor.getCount() != 0) {

      //mAdapter = new TalkBoxAdapter(getActivity(), som2_cursor);
         mAdapter.changeCursor(som2_cursor);                          <----여기가안먹네요ㅠ

      nowListNum = tmpEnd;

     } 

}

android.database.StaleDataException: Attempting to access a closed CursorWindow.Most probable cause: cursor is deactivated prior to calling this method.

 at android.database.AbstractWindowedCursor.checkPosition(AbstractWindowedCursor.java:139)

 at android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:50)




답변부탁드립니다!! ㅜㅜ



 

브이v (1,500 포인트) 님이 2014년 3월 24일 질문

2개의 답변

+1 추천
 
채택된 답변
http://khrislog.net/post/43807971830/how-to-use-loadermanager-and-contentprovider-rightly

참고해보세요

아 참고로 저는 swapcursor로 해결했었습니다만.. 이게 답은 아닌듯요~
건방진프로그래머 (26,630 포인트) 님이 2014년 3월 24일 답변
브이v님이 2014년 11월 28일 채택됨
+1 추천
리스트 갱신하실때 기냥 cursor.requery() 하시면 간단히 처리 될텐데요..
철수야안녕 (6,120 포인트) 님이 2014년 3월 24일 답변
requery()
This method was deprecated in API level 11. Don't use this. Just request a new cursor, so you can do this asynchronously and update your list view once the new cursor comes back.
...