2014-01-06 76 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的适配器。