首页新闻找找看学习计划

可拖动listview的一个问题

0
悬赏园豆:10 [已解决问题] 解决于 2014-12-19 15:22

最近做了一个listview,如下图所示:

可以实现拖动,但是有一个问题,当我把设备1和设备2交换后,第一个条目变为设备2,第二个我条目变为设备1,但是问题来了,这时用手指拖拽第一个条目(也就是设备2)的时候,显示的图标变为没移动前的图标(也就是设备1),不知道是有哪一个地方的错误引起的呢?

而且诡异的是我在模拟器上面用鼠标拖动一点问题没有,但是放在手机上用手拖动才会出现上述现象,但是如果拖动后过一分钟再拖动,好像这个时候已经刷新完毕,也不会出现错误,那么到底是什么原因呢?

菜鸟的梦醒的主页 菜鸟的梦醒 | 初学一级 | 园豆:71
提问于:2014-12-11 10:50
< >
分享
最佳答案
0

非常幸运,自己解决了这个问题,引起这个问题的原因如下:

1 item.setDrawingCacheEnabled(true);
2 Bitmap bitmap = Bitmap.createBitmap(item.getDrawingCache());
3 startDragging(bitmap, y);

在调用getDrawingCache()方法从ImageView对象获取图像之前,一定要调用setDrawingCacheEnabled(true)方法,这个没有疑问,问题是取到了图像之后,还有一个至关重要的步骤,那就是清空画图缓冲区,否则下一次取到的还是原来的图像,我没有清空的步骤,所以我startDragging拖拽的时候,取到的bitmap还是上一次的,因此可以在开始拖拽前加上这样一句:

item.setDrawingCacheEnabled(false);

就解决了,欧也!

菜鸟的梦醒 | 初学一级 |园豆:71 | 2014-12-11 11:45
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册