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:
parent
bdb93df55f
commit
4e61388fa8
@ -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)
|
||||
{
|
||||
|
@ -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();
|
||||
}
|
||||
};
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user