2011-11-20 80 views
0

当我运行我的课程时,列表视图首次填充了一首歌曲,但自那时起我添加了歌曲,并且它们不会添加到列表视图中,只有第一个歌曲在那里。我认为我的活动在每次关闭时都不会重新启动。这里是我的更新方法:ListView不会更新

public void updatelist() { 

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

    if (cursor.moveToFirst()) { 
     for(int j=0;j<cursor.getCount();j++) { 

      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); 
      artistname.add(artist_name); 
      albumname.add(album_name); 
      path.add(path1); 
     } 
    } 

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

这里是我破坏方法

@Override 
protected void onDestroy() { 
    super.onDestroy(); 
adapter.clear(); 
} 

谢谢您的帮助。

+0

如果您想在每次关闭应用程序时刷新列表,请尝试清除onPause()中的适配器,因为onDestroy()将在操作系统想要终止应用程序时调用,而不是在用户关闭时调用应用程序下降。 – Urban

回答