2011-11-21 71 views
0

特定的地點我有一個列表視圖顯示在alphebetical爲了歌曲通過這種方法被填充插入的TextView在ListView中

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變化的第一個字母。 我有這樣的方法來獲取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++; 

} 

如何,我會在適當的地點列表視圖中顯示這一點。謝謝你,如果你知道答案,我會給你一個很好的評價。

回答

0

你真的應該使用一個適配器......有庫可以爲你做所有這些工作,你不應該在一個巨大的循環中自己做!

這裏有一些sample code來幫助你開始......注意它有點過時了,它使用了一些不推薦的方法(如managedQuery等)。如果您想完全正確地使用Honeycomb版本中的接口LoaderManager.LoaderCallbacks<Cursor,但這是一個好的開始。

要顯示的觀點進行排序,你可以利用在ContentProviderquery方法sortOrder說法。