Facebook Twitter Google Maps RSS
Home 未分類 ドラッグ&ドロップで並び替え
formats

ドラッグ&ドロップで並び替え

Published on 2014年11月21日, by in 未分類.

 

こんにちは!
陽気なシステム屋の一員のぴーすぬです。
最近は街中がクリスマスムードになってきて、ウキウキしますね!

そして本日のブログですが、
私は現在、Andriodのアプリ開発をしております!

今回のアプリで私が担当した機能が、
日頃皆様もスマホやタブレットを使う上で必ず使っていらっしゃるであろう
【ドラッグ&ドロップで並び替え】
でございます。

私も日頃iPhoneを使っていますが、
iPhoneでいうホーム画面での並び替えと同じ様な機能です。
少し分かり辛いですが、
以下の線で挟まれた範囲を画面、数字を画像としてご覧頂ければと思います。

例えば、この様に画像が並んでいる画面があったとします。
————–
  1  2

  3  4

  5  6

  7  8
————–

この画面において、7の画像をD&Dで3の位置まで持っていったとします。
すると、

————–
  1  2

  7  3

  4  5

  6  8
————–

という並びになるようにしたい!
この機能を実装する為に、早速色々と調べてみました。
よくある機能だし、手早く実装できる…ということはなく、
バージョンの関係もありなかなか出来ません。

私はif文とfor文を使ってああでもない、こうでもない、を繰り返しながら、
何とかようやく書きあげました。
そして実行し、ドキドキしながらD&Dをした結果、

————–
 
   7
 
 
 
————–

という画面が表示されました。
・・・・・・落胆。
その後も試行錯誤するも上手くいかずにいたのですが、
ある時、先輩社員が閃いたのです!

すごい簡単に実装できる方法がある!!

そして実際に閃いたのが以下のコードです。

String temp = List.remove(oldIndex);
List.add(newIndex, temp);

・List→画像のIDを並び順に保持しているリスト
・oldIndex→初期表示時の画面でいう7の位置、つまり「6」
・newIndex→初期表示時の画面でいう3の位置、つまり「2」

これは、画像の並びを保持しているListにおいて、
移動させたい画像のIDをtempに代入して一旦削除をし、
移動先の位置に改めてtempを挿入するという処理です。
こうすることでif文もfor文もなく、
たった2文で並び替えを行うことが出来ました!!

私がゴリゴリ書いていた判定文も全部、全部、いらないと言うことです。
すごく便利ですね!

皆様も私の様にゴリゴリ書かずに、
この処理でスマートに並び替えを実装してみて下さい!

ではまた!
 
アプリ開発実績はこちら

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です


*