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/column: 2 Стиль 03- 08 21: 17: 26.688 2070-2070/com.example.android.alpha1 I/column: 3 Out Of The Woods 03-08 21: 17: 26.692 2070-2070/com.example.android.alpha1 I/column : 4 Все, что вам нужно было Пребывание 03-08 21: 17: 26.696 2070-2070/com.example.android.alpha1 I/col umn: 5 Shake It Off 03-08 21: 17: 26.696 2070-2070/com.example.android.alpha1 I/column: 6 Я желаю вам 03-08 21: 17: 26.700 2070-2070/com .example.android.alpha1 I/column: 7 Плохая кровь 03-08 21: 17: 26.704 2070-2070/com.example.android.alpha1 I/column: 8 Wildest Dreams 03-08 21: 17: 26.704 2070 -2070/com.example.android.alpha1 I/column: 9 Как вы получаете девушку 03-08 21: 17: 26.712 2070-2070/com.example.android.alpha1 I/column: 10 This Love 03- 08 21: 17: 26.712 2070-2070/com.example.android.alpha1 I/column: 11 Я знаю Места 03-08 21: 17: 26.712 2070-2070/com.example.android.alpha1 I/column : 12 Очистить 03-08 21: 17: 26.720 2070-2070/com.example.android.alpha1 I/column: 13 Wonderland 03-08 21: 17: 26.724 2070-2070/com.example.android.alpha1 I/column: 14 Вы In Love 03-08 21: 17: 26.728 2070-2070/com. example.android.alpha1 I/column: 15 New Romantics 03-08 21: 17: 26.732 2070-2070/com.example.android.alpha1 I/column: 16 Я знаю места (голос Memo) 03-08 21 : 17: 26.744 2070-2070/com.example.android.alpha1 I/column: 17 Я желаю вам (голосовое напоминание) 03-08 21: 17: 26.748 2070-2070/com.example.android.alpha1 I/столбец: 18 Пустое пространство (голос Memo) 03-08 21: 17: 26.752 2070-2070/com.example.android.alpha1 I/column: 19 Добро пожаловать в Нью-Йорк 03-08 21: 17: 26.752 2070 -2070/com.example.android.alpha1 I/column: 20 Пустое пространство 03-08 21: 17: 26.756 2070-2070/com.example.android.alpha1 I/column: 21 Стиль 03-08 21: 17: 26.760 2070-2070/com.example.android.alpha1 I/column: 22 Out Of The Woods 03-08 21: 17: 26.764 2070-2070/com.example.android.alpha1 I/column: 23 Все, что вам нужно было сделать Был Stay 03-08 21: 17: 26.764 2070-2070/com. example.android.alpha1 I/колонка: 24 Shake It Off 03-08 21: 17: 26.764 2070-2070/com.example.android.alpha1 I/колонки: 25 Я хочу, чтобы ты

+0

http://www.vogella.com/tutorials/AndroidListView/article.html#cursor cursor adapter docs должен помочь –

ответ

1

Do это так. Инициализировать 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(); 
    } 
} 

Это образец пример из моего текущего текущего проекта. Надеюсь это поможет.