現在有一個listview,綁定一個adapter,在adapter裡根據position,用cursor去獲取數據庫中一個表TB的數據,假設表中有200行數據。屏幕可以顯示10行listview的item,現在滑到了list底部,這個時候還有一個按鈕,按下的時候開啟一個新線程1,在這個新線程裡刪掉了表TB最末尾20行數據,
於是在線程1裡用Message傳一個消息,
讓UI主線程裡的handler去更換cursor,調adapter的notifydatasetchanged(),更新listview,
那麼問題來了,如果在線程1裡,刪掉數據後,傳遞消息前,我向上滑了一下listview
那麼這個時候會調用adapter的getview,position為200-10=190,調用cursor的movetoposition(190),然後getString();
此時,cursorwindow裡數據只有0-179條數據,但我卻請求了第190條數據,會引發一個cursorwindow的異常,大概是can not get row 190 in a cursor window of 180 rows.
要怎麼避免這個異常,或者怎麼做到及時更新我的cursor或cursorwindow呢?
如果游標方式顯示listview,那就不能增刪數據,如果有增刪數據,那就把數據查出來,放到list或者map中,再通過adapter進行顯示。