我在模拟器中有9首歌,列表视图中显示的项目数为9项。好极了,太好了!!!唯一的问题是这9个项目都是同一首歌。我已经在这个网站上找了很久,但还没有找到解决方案。下面的代码是我用来查询媒体存储的。
package javierpech.codeit.xaverius;
import java.util.ArrayList;
import java.util.HashMap;
import android.content.Context;
import android.database.Cursor;
import android.net.Uri;
import android.provider.MediaStore;
public class queryMediaStore {
private ArrayList<HashMap<String, String>> songs= new ArrayList<HashMap<String, String>>();
private String selection = MediaStore.Audio.Media.IS_MUSIC + " != 0";
private Uri externalUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
private Cursor cursor;
private String sortOrder = MediaStore.Audio.Media.TITLE + " ASC";
private String[] projection = {
MediaStore.Audio.Media.ARTIST,
MediaStore.Audio.Media.TITLE,
// MediaStore.Audio.Media.DISPLAY_NAME,
MediaStore.Audio.Media.DATA,
// MediaStore.Audio.Media.DURATION
};
//PUBLIC CONSTRUCTOR
public queryMediaStore(){
}
public ArrayList<HashMap<String, String>> updatePlaylist(Context c){
HashMap<String, String> tempSong = new HashMap<String, String>();
cursor = c.getContentResolver().query(
externalUri,
projection,
selection,
null,
sortOrder);
if (cursor!= null)
{
if(cursor.moveToFirst()){
while(cursor.moveToNext()){
tempSong.put("songArtist", cursor.getString(0));
tempSong.put("songTitle", cursor.getString(1));
tempSong.put("songPath", cursor.getString(2));
songs.add(tempSong);
}
}
}cursor.close();
return songs;
}
}