diff --git a/src/org/kreed/vanilla/MediaAdapter.java b/src/org/kreed/vanilla/MediaAdapter.java index 47fb1f96..3b33f233 100644 --- a/src/org/kreed/vanilla/MediaAdapter.java +++ b/src/org/kreed/vanilla/MediaAdapter.java @@ -64,7 +64,12 @@ public class MediaAdapter extends CursorAdapter implements FilterQueryProvider { setFilterQueryProvider(this); - changeCursor(runQuery(null)); + requery(); + } + + public final void requery() + { + changeCursor(runQuery(mConstraint)); } public void filter(CharSequence constraint, Filter.FilterListener listener) @@ -155,7 +160,7 @@ public class MediaAdapter extends CursorAdapter implements FilterQueryProvider { if (async) getFilter().filter(mConstraint); else - changeCursor(runQuery(mConstraint)); + requery(); } public final String[] getLimiter() @@ -170,6 +175,12 @@ public class MediaAdapter extends CursorAdapter implements FilterQueryProvider { return mLimiter.length; } + @Override + protected void onContentChanged() + { + // do nothing; we implement this in SongSelector + } + @Override public void bindView(View view, Context context, Cursor cursor) { diff --git a/src/org/kreed/vanilla/SongSelector.java b/src/org/kreed/vanilla/SongSelector.java index ac7f95ef..107ae1cf 100644 --- a/src/org/kreed/vanilla/SongSelector.java +++ b/src/org/kreed/vanilla/SongSelector.java @@ -21,10 +21,12 @@ package org.kreed.vanilla; import org.kreed.vanilla.R; import android.app.Dialog; +import android.content.ContentResolver; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.content.res.Resources; +import android.database.ContentObserver; import android.graphics.Color; import android.graphics.drawable.PaintDrawable; import android.net.Uri; @@ -116,6 +118,9 @@ public class SongSelector extends Dialog implements AdapterView.OnItemClickListe view.setOnItemClickListener(SongSelector.this); view.setOnCreateContextMenuListener(SongSelector.this); view.setAdapter(new SongMediaAdapter(getContext())); + + ContentResolver resolver = ContextApplication.getContext().getContentResolver(); + resolver.registerContentObserver(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, true, mObserver); } }); } @@ -319,4 +324,13 @@ public class SongSelector extends Dialog implements AdapterView.OnItemClickListe { return PlaybackActivity.handleKeyLongPress(getContext(), keyCode); } + + private ContentObserver mObserver = new ContentObserver(new Handler()) { + @Override + public void onChange(boolean selfChange) + { + for (int i = 0; i != 3; ++i) + getAdapter(i).requery(); + } + }; } \ No newline at end of file