2011-11-19 100 views
0

我試圖從SD卡在手機上添加的歌曲名稱列表視圖,但我得到一個空指針異常......Android的ListView控件添加到列表

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); 
} 
+2

*您在哪裏*得到例外?什麼是'songname',它在哪裏初始化? –

回答

0

我只是簡單地從SD卡獲取歌曲數據如下...它可能對您有所幫助

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)); 
} 
+0

如果我在我的應用程序中使用此代碼,THAnk你的人有很大的幫助嗎? –