梦里茶 2015-07-16 13:59 采纳率: 50%
浏览 1939
已采纳

cursorwindow数据库并发读写

现在有一个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呢?

  • 写回答

4条回答 默认 最新

  • danielinbiti 2015-07-16 15:01
    关注

    如果游标方式显示listview,那就不能增删数据,如果有增删数据,那就把数据查出来,放到list或者map中,再通过adapter进行显示。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥100 关于使用MATLAB中copularnd函数的问题
  • ¥20 在虚拟机的pycharm上
  • ¥15 jupyterthemes 设置完毕后没有效果
  • ¥15 matlab图像高斯低通滤波
  • ¥15 针对曲面部件的制孔路径规划,大家有什么思路吗
  • ¥15 钢筋实图交点识别,机器视觉代码
  • ¥15 如何在Linux系统中,但是在window系统上idea里面可以正常运行?(相关搜索:jar包)
  • ¥50 400g qsfp 光模块iphy方案
  • ¥15 两块ADC0804用proteus仿真时,出现异常
  • ¥15 关于风控系统,如何去选择