1

Android MediaStore.Audio.Media データベースにクエリを実行しようとしています。デバイス上の曲のパス (データベースのデータ列) を含む文字列の ArrayList である「プレイリスト」があります。プレイリストにはいくつかの曲しかありません (もちろん、現在デバイス上にあるすべての曲ではありません)。カーソルがデータベースからアーティスト、タイトル、アルバム ID 情報を返すようにします。クエリ自体は問題ではありません。選択文字列を作成し、プレイリストのエントリを選択引数として配置するだけで、正常に動作します。

問題は、データを返す順序です。null が「order by」引数として設定されている場合、カーソルはデータを昇順で返します。プレイリスト内の曲はランダムな順序になっているため、その順序で情報が返される必要があります。

プレイリストのエントリごとにデータベースに個別にクエリを実行しようとしましたが、うまくいき、正しい順序で情報が得られましたが、もちろん、かなりの量であり、かなり遅いという意味です。

単一のクエリでこれを行う方法はありますか?

4

1 に答える 1

1

リストに各曲を含める独自の order by 句を作成できます。

order by (case when song = <first song> then 1
               when song = <second song> then 2
               . . .
          end)

これにより、各曲に番号が割り当てられます。この数値は、結果を並べ替えるために order by 句でのみ使用されます。

于 2012-07-21T17:24:48.930 に答える