最近做了一个listview,如下图所示:
可以实现拖动,但是有一个问题,当我把设备1和设备2交换后,第一个条目变为设备2,第二个我条目变为设备1,但是问题来了,这时用手指拖拽第一个条目(也就是设备2)的时候,显示的图标变为没移动前的图标(也就是设备1),不知道是有哪一个地方的错误引起的呢?
而且诡异的是我在模拟器上面用鼠标拖动一点问题没有,但是放在手机上用手拖动才会出现上述现象,但是如果拖动后过一分钟再拖动,好像这个时候已经刷新完毕,也不会出现错误,那么到底是什么原因呢?
非常幸运,自己解决了这个问题,引起这个问题的原因如下:
1 item.setDrawingCacheEnabled(true); 2 Bitmap bitmap = Bitmap.createBitmap(item.getDrawingCache()); 3 startDragging(bitmap, y);
在调用getDrawingCache()方法从ImageView对象获取图像之前,一定要调用setDrawingCacheEnabled(true)方法,这个没有疑问,问题是取到了图像之后,还有一个至关重要的步骤,那就是清空画图缓冲区,否则下一次取到的还是原来的图像,我没有清空的步骤,所以我startDragging拖拽的时候,取到的bitmap还是上一次的,因此可以在开始拖拽前加上这样一句:
item.setDrawingCacheEnabled(false);
就解决了,欧也!