0

我正在構建音樂播放器,並且正在logcat中多次顯示歌曲。我想在列表視圖中顯示歌曲。這是我的主要活動:無法從內容提供商處獲取音頻列表

public class MainActivity extends AppCompatActivity { 
    List<String> list=new ArrayList<>(); 
     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_main); 
      File s= Environment.getExternalStorageDirectory(); 
      String[] as={"is_music","title"}; 
      Uri musicUri = android.provider.MediaStore.Audio.Media.EXTERNAL_CONTENT_URI; 
      Cursor musicCursor = getContentResolver().query(musicUri,as, null, null,null); 
      String[] a=musicCursor.getColumnNames(); 
      musicCursor.moveToFirst(); 
      Log.i ("fjfj",""+musicCursor.getCount()); 
      for(int i=0;i<musicCursor.getCount();i++){   
       list.add(musicCursor.getString(musicCursor.getColumnIndex("title"))); 
       //Log.i("position",musicCursor.getPosition()+list.get(musicCursor.getPosition())); 
       musicCursor.moveToNext();   
       Log.i("column",i+" "+list.get(i)); 
      } 

     } 
    } 

03-08 21:17:26.672 2070年至2070年/ com.example.android.alpha1 I /列:0 歡迎你們到紐約03-08 21:17 :26.676 2070-2070/com.example.android.alpha1 I/column:1空格03-08 21:17:26.688 2070-2070/com.example.android.alpha1 I /列:2樣式 03- 08 21:17:26.688 2070年至2070年/ com.example.android.alpha1 I /柱:3 OUT的伍茲03-08 21:17:26.692 2070年至2070年/ com.example.android.alpha1 I /列:4你所要做的只是 Stay 03-08 21:17:26.696 2070-2070/com.example.android.alpha1 I/col umn: 5搖一搖03-08 21:17:26.696 2070-2070/com.example.android.alpha1 我/專欄:6我希望你會03-08 21:17:26.700 2070-2070/com .example.android.alpha1 I /柱:7壞血03-08 21:17:26.704 2070年至2070年/ com.example.android.alpha1 I /柱:8狂野 夢03-08 21:17:26.704 2070 -2070/com.example.android.alpha1 I /柱:9,您如何得到女孩03-08 21:17:26.712 二零七零年至2070年/ com.example.android.alpha1 I /列:10這段愛情03- 08 21:17:26.712 2070-2070/com.example.android.alpha1 I /列:11我知道 地點03-08 21:17:26.712 2070-2070/com.example.android.alpha1 I /列:12清潔03-08 21:17:26.720 2070-2070/com.example.android.alpha1 I /專欄:13 Wonderland 03-08 21:17:26.724 2070-2070/com.example.android.alpha1 I /專欄:14您是 戀愛中03-08 21:17:26.728 2070-2070/com。 example.android.alpha1 I /專欄:15新浪漫主義03-08 21:17:26.732 2070-2070/com.example.android.alpha1我/專欄:16我知道的地方(聲音 備忘錄)03-08 21 :17:26.744 2070年至2070年/ com.example.android.alpha1 I /列:17我希望你(語音備忘錄)03-08 21:17:26.748 2070年至2070年/ com.example.android.alpha1我/列:18空白空間(語音 備註)03-08 21:17:26.752 2070年至2070年/ com.example.android.alpha1 I /列:19歡迎你們到紐約03-08 21:17:26.752 2070 -2070/com.example.android.alpha1 I /欄:20空格03-08 21:17:26.756 2070至2070年/ com.example.android.alpha1 I /柱:21樣式 03-08 21:17:26.760 2070至2070年/ com.example.android.alpha1 I /柱:22 缺貨伍茲03-08 21:17:26.764 2070-2070/com.example.android.alpha1我/專欄:23所有你必須做的 保持03-08 21:17:26.764 2070-2070/com。 example.android.alpha1 I /列:24搖一搖03-08 21:17:26.764 2070年至2070年/ com.example.android.alpha1 I /列:25我希望你能

+0

http://www.vogella.com/tutorials/AndroidListView/article.html#cursor光標適配器文檔應該幫助 –

回答

1

待辦事項就這樣。 初始化ArrayList並在onCreate()中調用一個函數。

的onCreate()之前

private ArrayList<String> songArrayList; 
private ListView listView; 

在OnCreate中():

songArrayList = new ArrayList(); 
listview = (*Find view by Id *); 
getSongList(); 
// Now create and set adapter to listview. Use songArrayList. 

功能:

public void getSongList() 
{ 
    /** 
    * All the audio files can be accessed using the below initialised musicUri. 
    * And there is a cursor to iterate over each and every column. 
    */ 
    ContentResolver contentResolver = getActivity().getContentResolver(); 
    Uri musicUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI; 
    Cursor musicCursor = contentResolver.query(musicUri, null, null, null, null, null); 

    // If cursor is not null 
    if(musicCursor != null && musicCursor.moveToFirst()) 
    { 
     //get Columns 
     int titleColumn = musicCursor.getColumnIndex(MediaStore.Audio.Media.TITLE); 


     // Store the title, id and artist name in Song Array list. 
     do 
     { 
      String thisTitle = musicCursor.getString(titleColumn); 
      // Add the info to our array. 
      songArrayList.add(thisTitle); 
     } 
     while (musicCursor.moveToNext()); 

     // For best practices, close the cursor after use. 
     musicCursor.close(); 
    } 
} 

這是我目前正在進行的項目取得的樣品的例子。希望這可以幫助。