2014-01-06 95 views
0

所以我有一個列表視圖,它顯示了我的設備上的每個音頻文件。它運行良好,但不會在第一次使用後更新,如果我添加新的音頻文件到我的設備,它不會顯示在列表視圖中。這隻能說明,如果我重新安裝了一些研究,我看到了,我需要更新MediaStore應用後ListView沒有更新

String[] proj = { MediaStore.Audio.Media._ID, 
MediaStore.Audio.Media.DATA, 
MediaStore.Audio.Media.DISPLAY_NAME, 
MediaStore.Video.Media.SIZE }; 
    SharedPreferences getPrefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext()); 
       boolean samples = getPrefs.getBoolean("checkbox", false); 
       if (samples==false) 
       musiccursor = managedQuery(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,proj, null, null, null); 
       else{ 
        musiccursor = managedQuery(MediaStore.Audio.Media.INTERNAL_CONTENT_URI,proj, null, null, null);} 
       count = musiccursor.getCount(); 
       musiclist = (ListView) findViewById(R.id.PhoneMusicList); 
       musiclist.setAdapter(new MusicAdapter(getApplicationContext(), count, null)); 
       musiclist.setOnItemClickListener(musicgridlistener); 

UPDATE ,我知道我可以掃描一個文件,sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("FILENAME"+ Environment.getExternalStorageDirectory())));,但我怎麼能做到這一點的所有音頻文件?

+0

添加重新加載按鈕/機制 – petey

回答

1

您必須通知Listview計數值已更改。所以在MusicAdapter中創建一個方法來在Listview中設置新的內容列表。

+0

我做了一些研究,我看到我需要更新MediaStore? – user1798049

0

通知您的音樂適配器,以便它可以更新。試試這個:

MusicAdapter.notifyDataSetChanged(); 
+0

nop,那不會工作 – user1798049

+0

@ user1798049 - 有什麼錯誤? – speedsir

+0

沒有錯誤,它只是不更新​​列表,我想我需要更新MediaStore – user1798049

0

讓您的列表適配器(MusicAdapter)延長android.widget.CursorAdapter將允許它來追蹤在底層內容提供商修改和更新相關聯的列表視圖。

此外,很久以前Activity.managedQuery已被棄用,請使用loaders代替將遊標與活動生命週期相關聯。

0

添加一個按鈕來重新檢查計算機上的所有音頻文件。點擊此按鈕,使用與您現在使用相同的步驟來檢測音頻文件。檢測完所有文件後,更新listView的適配器。