Android列表视图添加到列表

时间:2011-11-19 08:13:19

标签: java android listview cursor

我正在尝试将手机上的SD卡中的歌曲名称添加到列表视图中,但我得到一个空指针异常......

private void updateList() {
    String[] proj = { MediaStore.Audio.Media._ID,
                      MediaStore.Audio.Media.DATA,
                      MediaStore.Audio.Media.DISPLAY_NAME,
                      MediaStore.Audio.Artists.ARTIST };

    Cursor tempCursor = managedQuery(
            MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
            proj,
            null,
            null,
            null);

    int col_index = -1;
    int numSongs = tempCursor.getCount();

    while (tempCursor.moveToNext()) {
        col_index = tempCursor.getColumnIndexOrThrow(
                MediaStore.Audio.Artists.ARTIST);

        songname.add(tempCursor.getString(col_index));
    }

    ArrayAdapter<String> songss = new ArrayAdapter<String>(
            this, R.id.songs, songname);
    setListAdapter(songss);
}

1 个答案:

答案 0 :(得分:0)

我只是简单地从sdcard获取歌曲数据,如下所示......这对你有帮助

    Cursor cursor = getContentResolver().query(
                    MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null, null, null,
                    null);

   if(cursor.moveToFirst())
{
                for(int j=0;j<cursor.getCount();j++)
                {


                            int ALBUM_ID =  cursor.getInt((cursor
                                    .getColumnIndex(MediaStore.Audio.AlbumColumns.ALBUM_ID)));
                            String album_url = null;

                            Uri sArtworkUri = Uri
                                    .parse("content://media/external/audio/albumart");
                            Uri uri = ContentUris.withAppendedId(sArtworkUri, ALBUM_ID);
                            album_url = uri.toString();
                            ContentResolver res = this.getContentResolver();
                            // Album
                            String album_name = cursor.getString(cursor
                                    .getColumnIndex(MediaStore.Audio.AlbumColumns.ALBUM));

                            String year = cursor.getString(cursor
                                    .getColumnIndex(MediaStore.Audio.AudioColumns.YEAR));
    //                  String year = cursor.getString(cursor
    //                              .getColumnIndex(MediaStore.Audio.AlbumColumns.NUMBER_OF_SONGS));


                            // artist
                            String artist_name = cursor.getString(cursor
                                    .getColumnIndex(MediaStore.Audio.ArtistColumns.ARTIST));
                            // displayname
                            String DisplayName = cursor.getString(cursor
                                    .getColumnIndex(MediaStore.MediaColumns.DISPLAY_NAME));

// title

String Title = cursor.getString(cursor
                                    .getColumnIndex(MediaStore.MediaColumns.TITLE));
}