【发布时间】:2016-01-18 16:16:10
【问题描述】:
所以我正在做的是: 有歌曲,按特定顺序。 我正在存储歌曲的 ID 列表,以便稍后以相同的顺序获取它们。
我将 ID 列表存储在变量 in 中,这就是我获取它们的方式:
StringBuilder sb = new StringBuilder( in.length * 2 - 1 );
sb.append( "?" );
for ( int i = 1; i < in.length; i ++ )
{
sb.append( ",?" );
}
String strIn = sb.toString( );
songCursor = context.getContentResolver( ).query( MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, TRACK_COLUMNS,
MediaStore.MediaColumns._ID + " IN (" + strIn + ")", in, null );
一切正常,唯一的问题是,列表的顺序与存储顺序不同。在这里我不能使用排序顺序,因为显然没有指定我想要的顺序。我希望它按照存储的顺序排列,但我不知道该怎么做。
这也是将鼠标悬停在查询上时给出的信息,因此可以解释原因,但我没有解决方案。
selectionArgs 您可以在选择中包含 ?s,它将被替换 通过 selectionArgs 中的值,按照它们出现在 选择。
例如:
在上图中,我按顺序存储了所有歌曲的id。
但是当我检索它们时,顺序发生了变化。
【问题讨论】:
-
如果我理解正确,请按
MediaStore.MediaColumns.DATE_ADDED列排序。 -
不不,如果有歌曲列表,则顺序必须与添加歌曲/ID 的顺序相匹配
-
好的。加了什么呢?
-
现在我存储 ids,然后再检索它们,应该保持歌曲的原始顺序,这不会发生
-
顺序必须与添加歌曲/id 的顺序相匹配,假设现在有一个歌曲列表,我存储了 id,然后我稍后尝试检索它们。应该保持存储歌曲 ID 的原始顺序,这不会发生