2013-07-15 102 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上刪除動畫顯示項目。但是,我的解決方案適用於任何想快速解決此問題的人。