21

カーソルアダプタとリストアダプタを使用したドラッグアンドドロップの並べ替えに関する情報が非常に少ないことに非常に驚いています。

私がstackoverflowで見つけた最も近い投稿はこれです:

https://stackoverflow.com/a/5047618/317889

しかし、CommonsWareが提案するものを実装する方法は私にはわかりません-明確化は非常に役立ちます。

これまでのところ、カーソルデータをリストアダプタにバインドし、これを次のように設定しています。

mMyCursorAdapter = new MyCursorAdapter(getActivity(), null);
setListAdapter(mMyCursorAdapter);
getLoaderManager().initLoader(0, null, this);

リストは生成されますが、リストアイテムにドラッグアンドドロップ機能を追加したいと思います。

アーキテクチャの観点からこれを実行するための最良の方法を知りたいのですが、コア機能の開発を実行する方法についてのポインタも役立ちます。

4

3 に答える 3

3

Jason McReynolds によるこのブログ投稿(サンプル プロジェクトを含む) は、私を大いに助けてくれました。

Carl A. Bauer の Library Drag-Sort-ListViewを CursorAdapter と SqLite で使用する方法について説明します。ListView の新しく並べ替えられた状態をデータベースに保存する方法も示しています。

于 2013-06-12T22:41:54.413 に答える
1

これは間違いなく達成でき、幸運なことに、ほとんどの作業はすでに処理されていますが、仕様に合わせてクラスを少し変更する必要があります。

デフォルトの Android ミュージック アプリには、必要なクラスがすべて含まれています。

ListViewまず、ドラッグ アンド ドロップを可能にするカスタムを取得する必要があります。

それはここにあります - TouchInterceptor.java

Cursorでアイテムを実際に移動するために使用されるカスタムも取得する必要がありますListView。という内部クラスNowPlayingCursorです。

それはここにあります - TrackBrowserActivity.java

NowPlayingCursorextendsAbstractCursorであり、キューを返すために使用されます。メソッドmakeNowPlayingCursor()は、特に、独自のコードのほとんどを記述する場所です。キューを返す代わりに、移動したいアイテムを返す必要があります。

を使用するにはTouchInterceptor、 を実装する必要がありますTouchInterceptor.DropListener

   private TouchInterceptor.DropListener mDropListener =
        new TouchInterceptor.DropListener() {
        public void drop(int from, int to) {
               final NowPlayingCursor mNowPlayingCursor = (NowPlayingCursor) YOUR_CURSOR;
                mNowPlayingCursor.moveItem(from, to);
                // Call `notifyDataSetChanged` here.
        }
    };

moveQueueItemまた、アイテムをあるインデックスから別のインデックスに移動するために使用される方法も確認する必要があります。このメソッドは、NowPlayingCursorwhenonMoveおよびmoveItemare が呼び出されるときに使用されます。

それはここにあります - MediaPlaybackService.java

したがって、あなたの側でいくつかの作業を行う必要がありますが、これは間違いなく可能です。

于 2012-10-04T10:41:19.207 に答える
0

これがあなたの問題をうまく解決するライブラリです。リストアイテムのドラッグアンドドロップによる並べ替えが可能です。Fragmentsおよびのユースケースを含む優れたデモがありますCursors

https://github.com/bauerca/drag-sort-listview

主な機能:

  • ドラッグアンドドロップをきれいにします(視覚的な不具合はありません。願っています!)。
  • ドラッグ中の直感的でスムーズなスクロール。
  • 異種アイテムの高さのサポート。
  • パブリックstartDrag()およびstopDrag()メソッド。
  • フローティングビューをカスタマイズするためのパブリックインターフェイス。
于 2012-11-22T06:02:00.897 に答える