LoginSignup
7
7

More than 5 years have passed since last update.

DynamicListViewで変なとこでどハマりしてしまったのでメモ

Posted at

ListViewAnimationsに含まれているDynamicListViewはとても素晴らしいです
お手軽にGmailアプリのようなリストビューができるのです

ということで、それを使ってドラッグアンドドロップでリストの並び替えをしてみたのですが、
意外な(?)なとこでハマってしまったのでメモ。

問題ない正しい方から

使い方は公式wikiにも書かれている通りです

mDynamicListView = (DynamicListView)findViewById(R.id.dynamic_list_view);

// ドラッグあんどドロップを有効に
mDynamicListView.enableDragAndDrop();

// 長押しリスナーでドラッグ開始の処理
mDynamicListView.setOnItemLongClickListener();

// ドロップの処理
mDynamicListView.setOnItemMovedListener();

と、こういう感じで各リスナーで正しく処理をかけば問題なく、ドラッグアンドドロップで並び替えできるでしょう
それぞれの処理は端折ってますけど。

自分が血迷ってできなかった方

でも、自分の場合、最初…

mDynamicListView = (DynamicListView)findViewById(R.id.dynamic_list_view);

// 長押しリスナーでドラッグ開始の処理
mDynamicListView.setOnItemLongClickListener();

// ドロップの処理
mDynamicListView.setOnItemMovedListener();

// ドラッグあんどドロップを有効に
mDynamicListView.enableDragAndDrop();

こう書いていたのです。
違い、わかりますか?
enableDragAndDrop()の呼ぶ順番です。(最後に呼んでいたのです

こうすると、どうなるのか…
ドラッグアンドドロップはできます
(画面上リストアイテムもきっちり移動します)
がしかし・・・

onItemMoved()が呼ばれない

という事態に…。
なので、画面上の並び替えの結果を受け取ってサーバーへ送信したいとかっていう場合、
処理できません…(汗)

結論

ちゃんと順番を守って使いましょう。

こんなことで、めちゃ時間くった…orz

参考

ListViewAnimations

7
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
7