2013-07-15 155 views
0

今天我注意到,当您在ListView中快速双击拖动时,列表将转到列表的末尾或开头。看来,这只发生在三星手机。Android - Samsung问题 - ListView快速滚动双击拖动

这已经成为一个问题,因为我将JazzyListView动画效果添加到列表上的元素,并且只要发生快速移动,它们就会崩溃。 (每当调用ListView.layoutChildren方法时,NullPointerException)

也许我需要修改库,或者是否有任何方法来禁用此ListView行为?

回答

2

那么这种效应被称为“DOUBLE FLING”,它每当我这样做,可惜在AbsListView你可以做投掷的唯一的事情是设置摩擦和速度的规模出现在logcat中。如果有人知道如何禁用的影响将是巨大的(但是这可能不是这个问题的最佳解决方案,因为用户可能熟悉这种行为

我做什么(我快+肮脏的解决方案)是修改JazzyListView库,具体JazzyHelper类,仅在确认该项目是不适用动画之前空:

  while (firstVisibleItem + indexAfterFirst < mFirstVisibleItem) { 
       View item = view.getChildAt(indexAfterFirst); 
       if(item != null) { 
        doJazziness(item, firstVisibleItem + indexAfterFirst, -1); 
       } 

       indexAfterFirst++; 
      } 

      int indexBeforeLast = 0; 
      while (lastVisibleItem - indexBeforeLast > mLastVisibleItem) { 
       View item = view.getChildAt(lastVisibleItem - firstVisibleItem - indexBeforeLast); 

       if(item != null) { 
        doJazziness(item, lastVisibleItem - indexBeforeLast, 1); 
       } 

       indexBeforeLast++; 

      } 

我相信,我应该修改一些有关实例属性mFirstVisibleItem,否则fastscrolling上删除动画显示项目。但是,我的解决方案适用于任何想快速解决此问题的人。