Implement similar graceful no media handling in song selector

Songs disappear when the sd card is unmounted and reappear when it is remounted
This commit is contained in:
Christopher Eby 2010-04-04 15:17:52 -05:00
parent bdb93df55f
commit 4e61388fa8
2 changed files with 27 additions and 2 deletions

View File

@ -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)
{

View File

@ -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();
}
};
}