Вставить TextView в определенных точках в ListView - PullRequest
0 голосов
/ 22 ноября 2011

У меня есть представление списка, в котором отображаются песни в алфавитном порядке, заполняемые этим методом

public void updatelist(){

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

    if(cursor.moveToFirst()){
        do{

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

            int pathcolumn = cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DATA);

            String path1 = cursor.getString(pathcolumn);

            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));
                // display name
                String DisplayName = cursor.getString(cursor.getColumnIndex(MediaStore.MediaColumns.DISPLAY_NAME));

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

                songtitle.add(Title);
                Collections.sort(songtitle);
                artistname.add(songtitle.indexOf(Title), artist_name);
                albumname.add(songtitle.indexOf(Title), album_name);
                path.add(songtitle.indexOf(Title),path1);
                albumartwork.add(songtitle.indexOf(Title),album_url);
                j++;
            }while(cursor.moveToNext());
            }
              Collections.sort(songtitle);

              adapter = new ArrayAdapter<String>(this,R.layout.song,songtitle);

                setListAdapter(adapter);


        }

Мой вопрос: я хочу вставлять разделители всякий раз, когда первая буква SongName изменяется.У меня есть этот метод, чтобы получить первую букву названия песни, если она отличается от предыдущей ..

   private void alphebetdividers(ArrayList<String> songtitle2) {
    String newString = null;
    // TODO Auto-generated method stub
    ArrayList<Character> letters = new ArrayList<Character>();
    int i = 0;
    int j = 0;
    while( j < songtitle.size()-1){
            if(songtitle2.get(i).charAt(0) == songtitle2.get(i+1).charAt(0)){
                Toast.makeText(getApplication(), songtitle2.get(i).charAt(0) + "== " + songtitle2.get(i+1).charAt(0), Toast.LENGTH_LONG).show();
            }else{
                // Display Char with TextView
                String songName = songtitle2.get(i);
               newString = songName.substring(0, 1);


            }
      j++;
      i++;

}

Как бы я отобразил это в виде списка в соответствующих местах.Спасибо, и я дам вам хороший рейтинг, если вы знаете ответ.

Ответы [ 2 ]

0 голосов
/ 20 января 2012

Вы действительно должны использовать адаптер ... есть библиотеки, которые делают всю эту работу за вас, вам не нужно делать это самостоятельно в большом цикле!

Вот некоторые пример кода , чтобы помочь вам начать ... обратите внимание, что он несколько устарел, поскольку использует некоторые устаревшие методы (например, managedQuery и т. Д.).Если вы хотите быть полностью на 100% корректным, вы захотите использовать интерфейс LoaderManager.LoaderCallbacks<Cursor, представленный в релизе Honeycomb, но это хорошее начало.

Для сортировки отображаемых видов вы можете использоватьаргумент sortOrder в методе ContentProvider query.

0 голосов
/ 22 ноября 2011

Возможно, вам нужен адаптер, который реализует SectionIndexer, в частности AlphabetIndexer. См. это или это .

...