Skip to content

Commit 1347c38

Browse files
authored
Merge pull request #50 from marcbaechinger/master
Fix recycler view adapter for browsing catalogue
2 parents 238521e + 7cdab87 commit 1347c38

File tree

1 file changed

+34
-5
lines changed

1 file changed

+34
-5
lines changed

mediacontroller/src/main/java/com/example/android/mediacontroller/MediaAppControllerActivity.java

Lines changed: 34 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@
6363
import androidx.core.content.ContextCompat;
6464
import androidx.core.content.res.ResourcesCompat;
6565
import androidx.core.graphics.drawable.DrawableCompat;
66+
import androidx.core.util.Supplier;
6667
import androidx.media.MediaBrowserServiceCompat;
6768
import androidx.recyclerview.widget.DiffUtil;
6869
import androidx.recyclerview.widget.LinearLayoutManager;
@@ -129,9 +130,28 @@ public class MediaAppControllerActivity extends AppCompatActivity {
129130
private AudioFocusHelper mAudioFocusHelper;
130131
private RatingUiHelper mRatingUiHelper;
131132
private final CustomControlsAdapter mCustomControlsAdapter = new CustomControlsAdapter();
132-
private final BrowseMediaItemsAdapter mBrowseMediaItemsAdapter = new BrowseMediaItemsAdapter();
133-
private final BrowseMediaItemsAdapter mBrowseMediaItemsExtraSuggestedAdapter = new BrowseMediaItemsAdapter();
134-
private final SearchMediaItemsAdapter mSearchMediaItemsAdapter = new SearchMediaItemsAdapter();
133+
private BrowseMediaItemsAdapter mBrowseMediaItemsAdapter = new BrowseMediaItemsAdapter(
134+
new Supplier<MediaBrowserCompat>() {
135+
@Override
136+
public MediaBrowserCompat get() {
137+
return mBrowser;
138+
}
139+
});
140+
@Nullable
141+
private BrowseMediaItemsAdapter mBrowseMediaItemsExtraSuggestedAdapter = new BrowseMediaItemsAdapter(
142+
new Supplier<MediaBrowserCompat>() {
143+
@Override
144+
public MediaBrowserCompat get() {
145+
return mBrowserExtraSuggested;
146+
}
147+
});
148+
private final SearchMediaItemsAdapter mSearchMediaItemsAdapter = new SearchMediaItemsAdapter(
149+
new Supplier<MediaBrowserCompat>() {
150+
@Override
151+
public MediaBrowserCompat get() {
152+
return mBrowser;
153+
}
154+
});
135155

136156
private ModeHelper mShuffleToggle;
137157
private ModeHelper mRepeatToggle;
@@ -1110,9 +1130,14 @@ protected void setMode(int mode) {
11101130
private class BrowseMediaItemsAdapter extends
11111131
RecyclerView.Adapter<BrowseMediaItemsAdapter.ViewHolder> {
11121132

1133+
private final Supplier<MediaBrowserCompat> mBrowserSupplier;
11131134
private List<MediaBrowserCompat.MediaItem> mItems;
11141135
private final Stack<String> mNodes = new Stack<>();
11151136

1137+
public BrowseMediaItemsAdapter(Supplier<MediaBrowserCompat> browserSupplier) {
1138+
mBrowserSupplier = browserSupplier;
1139+
}
1140+
11161141
MediaBrowserCompat.SubscriptionCallback callback =
11171142
new MediaBrowserCompat.SubscriptionCallback() {
11181143
@Override
@@ -1273,13 +1298,13 @@ public void run() {
12731298

12741299
protected void subscribe() {
12751300
if (mNodes.size() > 0) {
1276-
mBrowser.subscribe(mNodes.peek(), callback);
1301+
mBrowserSupplier.get().subscribe(mNodes.peek(), callback);
12771302
}
12781303
}
12791304

12801305
protected void unsubscribe() {
12811306
if (mNodes.size() > 0) {
1282-
mBrowser.unsubscribe(mNodes.peek(), callback);
1307+
mBrowserSupplier.get().unsubscribe(mNodes.peek(), callback);
12831308
}
12841309
updateItems(null);
12851310
}
@@ -1322,6 +1347,10 @@ class ViewHolder extends RecyclerView.ViewHolder {
13221347
*/
13231348
private class SearchMediaItemsAdapter extends BrowseMediaItemsAdapter {
13241349

1350+
public SearchMediaItemsAdapter(Supplier<MediaBrowserCompat> browserSupplier) {
1351+
super(browserSupplier);
1352+
}
1353+
13251354
@Override
13261355
protected void subscribe() {
13271356
if (treeDepth() == 1) {

0 commit comments

Comments
 (0)