2016-12-05 2 views
2

私はこのSwipeToDismissListenerを使用して、リストビュー内のアイテムを閉じます。Android SwipeToDismiss ListViewが壊れるアイテム

http://www.java2s.com/Open-Source/Android_Free_Code/UI/gridview/com_datayumyum_posSwipeDismissListViewTouchListener_java.htm

却下は正常に動作しても、正しい位置を却下返しますが、その後の事は私のために奇妙な取得し始めています。 onDismissで

、私は私のアダプタから項目を削除します。ListViewのが今redrawedされている場合

public void onDismiss(ListView listView, int[] reverseSortedPositions) {     
    for (int i: reverseSortedPositions) { 
       Item item = adapter.getItem(i); 
       adapter.remove(item); 
      } 
} 

は、項目がリスト内の他の項目のように見え始める(その項目Aは項目のテキストを表示B)しかし、私がonClickListenerを実装し、それが実際にどの項目であるかを確認すれば、それは正しいものなので、明らかにグラフィックの問題です。

私はを呼び出すことによって、この間違った外観を修正することができますがクリックした項目に独立 2回adapter.notifydatasetchanged .... 私は一度だけそれを呼び出すか、私はそれを呼び出す場合は遅れた場合にはadapter.notifydatasetchangedでは動作しませんが、自動的に...

誰かがアイデアを持っていますか?ここで何が起こっていますか?

また、アダプター.getViewは、1回の再描画しか行われない場合、各項目に対して複数回呼び出されます。これが正常かどうかはわかりません。

答えて

0

私はこの問題を自分で解決しました。 これは、ArrayAdapterでのビューリサイクルの悪い実装でした。 ヒントと同様に、実行時にリストから要素を削除する場合は、getViewでViewリサイクルを正しく実装するようにしてください。

関連する問題