android – 拖放不能在nhaarman的ListviewAnimation库中工作

前端之家收集整理的这篇文章主要介绍了android – 拖放不能在nhaarman的ListviewAnimation库中工作前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用nhaarman的ListviewAnimation库 https://github.com/nhaarman/ListViewAnimations,效果很好.

但是我面临以下问题:

我面临的主要问题是,我无法调试我的代码.我已经将四个必需的库直接复制/粘贴到libs文件夹中.在任何listview方法(如onItemLongClick())中放置调试点都不起作用.

第二个问题是,拖放listView在我的代码中不起作用.每当我尝试拖动任何列表项时,在删除列表项时,该项将采用与其拖动相同的位置.

这是我用过的代码

  1. listview.enableDragAndDrop();
  2. listview.setDraggableManager(new TouchViewDraggableManager(
  3. R.id.list_row_draganddrop_textview));
  4. listview.setOnItemMovedListener(this);
  5. listview.setOnItemLongClickListener(this);
  6.  
  7. @Override
  8. public void onItemMoved(final int originalPosition,final int newPosition) {
  9. if (mToast != null) {
  10. mToast.cancel();
  11. }
  12.  
  13. mToast = Toast.makeText(getApplicationContext(),"Moved"
  14. + swingBottomInAnimationAdapter.getItem(newPosition)
  15. + newPosition,Toast.LENGTH_SHORT);
  16. mToast.show();
  17. }
  18.  
  19. @Override
  20. public boolean onItemLongClick(final AdapterView<?> parent,final View view,final int position,final long id) {
  21. if (listview != null) {
  22. listview.startDragging(position - listview.getHeaderViewsCount());
  23. }
  24. return true;
  25. }

解决方法

Whenever I try to drag any list item,on dropping the list item,the item takes the same position from which it was dragged.

当然.处理位置变化是你的责任,你应该在onItemMoved回调中处理它:

  1. @Override
  2. public void onItemMoved(final int originalPosition,final int newPosition) {
  3. if (mToast != null) {
  4. mToast.cancel();
  5. }
  6.  
  7. mToast = Toast.makeText(getApplicationContext(),"Moved"
  8. + swingBottomInAnimationAdapter.getItem(newPosition)
  9. + newPosition,Toast.LENGTH_SHORT);
  10. mToast.show();
  11.  
  12. // Adapt the following to your implementation
  13.  
  14. if (originalPosition != newPosition) {
  15. YourObject item = (YourObject) yourAdapter.getItem(originalPosition);
  16. yourAdapter.moveItem(item,newPosition);
  17. }
  18. }

上面提到的方法看起来像:

  1. public void moveItem(YourObject item,int newIndex) {
  2. if (mEntries != null) {
  3. mEntries.remove(item);
  4. mEntries.add(newIndex,item);
  5. notifyDataSetChanged();
  6. }
  7. }

如果你浏览源代码,你会发现你正在拖动的是一个位图.列表项位于其原始位置.

猜你在找的Android相关文章