2015-08-24 3 views
0

Я делаю медиаплеер в настоящее время, и я целый день искал, как создать новый список, отображающий всех исполнителей в телефоне.Заполнить список с именем исполнителя?

тип списка, где, если вы нажмете на него, Итл перейти в список альбомов этого исполнителя, то песни и т.д.

степень того, что я знаю, что я должен сделать, это использовать Mediastore для разобраться, но я просто в тупике.

Любая помощь? У меня даже нет кода, чтобы уйти, потому что я пытался и удалял то, что делал Ive.

+0

Это не по теме, но до сих пор [фотографии] (http://code.tutsplus.com/tutorials/create-a-music-player-on-android-project-setup--mobile-22764) –

+0

Вот [полезный учебник] (http://www.vogella.com/tutorials/AndroidListView/article.html), который помог мне многое в дни, чтобы понять и реализовать «ListView's». – JanithaR

+0

@ LX Да, у меня есть мой основной список песен, в котором показаны все песни на телефоне, но теперь мне нужен список только для художников, и вот где я застрял, сделаю ли я еще один адаптер для просмотра артистом заполнить его, и если да, то какой правильный код контента MediaStore, чтобы запросить правильные вещи –

ответ

0

Я понимаю, как это вообще не имеет абсолютно никакого понятия, с чего начать искать.

В любом случае, я использую следующий код для получения списка художников.

public ArrayList<ArtistItem> getArtistList() { 
    ArrayList<ArtistItem> artistList = new ArrayList<ArtistItem>(); 
     Uri uri = MediaStore.Audio.Artists.EXTERNAL_CONTENT_URI; 
     String[] projection = new String[] {MediaStore.Audio.Artists._ID, MediaStore.Audio.ArtistColumns.ARTIST, MediaStore.Audio.ArtistColumns.NUMBER_OF_TRACKS}; 
     Cursor musicCursor = getContentResolver().query(uri, projection, null, null, null); 

     int idColumn = musicCursor.getColumnIndex(MediaStore.Audio.Artists._ID); 
     int titleColumn = musicCursor.getColumnIndex(MediaStore.Audio.ArtistColumns.ARTIST); 
     int numColumn = musicCursor.getColumnIndex(MediaStore.Audio.ArtistColumns.NUMBER_OF_TRACKS); 
     // Iterate over the List 
     if(musicCursor!=null && musicCursor.moveToFirst()) { 

      //add songs to list 
      do { 
       String id = musicCursor.getString(idColumn); 
       String title = musicCursor.getString(titleColumn); 
       String num = musicCursor.getString(numColumn); 
       if(title == null || title.equals(MediaStore.UNKNOWN_STRING)) { 
        title = "Unknown Artist"; 
       } 
       if(num.equals("1")) { 
        num = num + " Song"; 
       } else { 
        num = num + " Songs"; 
       } 
       artistList.add(new ArtistItem(thisId, thisTitle, thisNum)); 
      } while (musicCursor.moveToNext()); 
     } 
     return artistList; 
    } 

    public class ArtistItem{ 
     private String id; 
     private String title; 
     private String num; 

     ArtistItem(String theId, String theTitle, String theNum) { 
      id = theId; 
      title = theTitle; 
      num = theNum; 
     } 
     // TODO Implement getters and setters for id, title and num 
    } 
+0

Извините, что спам, но если вам понравился мой ответ, не могли бы вы отправить мне файл android.jar для уровня API 23 до john.precursor ATGMAILDOT COM? Пожалуйста? Мне это действительно нужно на планшете, и мой ноутбук обжарился. – DavidH

+0

Почему вы всегда перебираете «Курсор», чтобы получить список, который затем передается в «ArrayAdapter», когда вы можете передать его прямо в «SimpleCursorAdapter»? – pskink

+0

@pskink Я предпочитаю настраивать свои ListViews с помощью BaseAdapter. Я не думаю, что могу передать курсор на BaseAdapter. Ну, технически я могу, но я считаю, что ArrayList легче работать внутри BaseAdapter. – DavidH

Смежные вопросы