Skip to content

Commit f5a1f91

Browse files
Jared234Stypox
authored andcommitted
Continued working on a way to show that items are already in a playlist
1 parent ac15339 commit f5a1f91

2 files changed

Lines changed: 37 additions & 27 deletions

File tree

app/src/main/java/org/schabi/newpipe/local/LocalItemListAdapter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -347,7 +347,7 @@ public void onBindViewHolder(@NonNull final RecyclerView.ViewHolder holder, fina
347347

348348
@Override
349349
public long getItemId(final int position) {
350-
final LocalItem item = localItems.get(0);
350+
final LocalItem item = localItems.get(position);
351351
if (item != null && item.getLocalItemType() == LocalItem.LocalItemType.
352352
PLAYLIST_LOCAL_ITEM) {
353353
return ((PlaylistMetadataEntry) item).uid;

app/src/main/java/org/schabi/newpipe/local/dialog/PlaylistAppendDialog.java

Lines changed: 36 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,10 @@
1616
import org.schabi.newpipe.R;
1717
import org.schabi.newpipe.database.playlist.PlaylistMetadataEntry;
1818
import org.schabi.newpipe.database.stream.model.StreamEntity;
19+
import org.schabi.newpipe.fragments.OnScrollBelowItemsListener;
1920
import org.schabi.newpipe.local.LocalItemListAdapter;
2021
import org.schabi.newpipe.local.playlist.LocalPlaylistManager;
2122

22-
import java.util.HashMap;
2323
import java.util.List;
2424

2525
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers;
@@ -126,34 +126,44 @@ private void onPlaylistsReceived(@NonNull final List<PlaylistMetadataEntry> play
126126
playlistAdapter.addItems(playlists);
127127
playlistRecyclerView.setVisibility(View.VISIBLE);
128128

129-
final LocalPlaylistManager playlistManager =
130-
new LocalPlaylistManager(NewPipeDatabase.getInstance(requireContext()));
131-
final List<Long> duplicateIds = playlistManager.getDuplicatePlaylist(getStreamEntities()
132-
.get(0).getUrl()).blockingFirst();
129+
playlistRecyclerView.addOnScrollListener(new DefaultItemListOnScrolledDownListener());
130+
initDuplicateIndicators(playlistRecyclerView);
131+
}
132+
}
133133

134-
final HashMap<Integer, Long> map = new HashMap<>();
135-
for (int i = 0; i < playlists.size(); i++) {
136-
map.put(i, playlists.get(i).uid);
134+
public class DefaultItemListOnScrolledDownListener extends OnScrollBelowItemsListener {
135+
@Override
136+
public void onScrolledDown(final RecyclerView recyclerView) {
137+
showDuplicateIndicators(recyclerView);
138+
}
139+
}
140+
141+
public void initDuplicateIndicators(@NonNull final RecyclerView view) {
142+
view.postDelayed(new Runnable() {
143+
@Override
144+
public void run() {
145+
showDuplicateIndicators(view);
137146
}
147+
}, 50);
148+
}
138149

139-
playlistRecyclerView.postDelayed(new Runnable() {
140-
@Override
141-
public void run() {
142-
if (playlistRecyclerView.getAdapter() == null) {
143-
return;
144-
}
145-
final int count = playlistRecyclerView.getAdapter().getItemCount();
146-
System.out.println(" kasjdflkalk" + playlistRecyclerView.getAdapter()
147-
.getItemId(0));
148-
for (int i = 0; i < count; i++) {
149-
if (playlistRecyclerView.findViewHolderForAdapterPosition(i) != null
150-
&& duplicateIds.contains(playlistAdapter.getItemId(i))) {
151-
playlistRecyclerView.findViewHolderForAdapterPosition(i).itemView
152-
.findViewById(R.id.checkmark2).setVisibility(View.VISIBLE);
153-
}
154-
}
155-
}
156-
}, 1000);
150+
public void showDuplicateIndicators(final RecyclerView view) {
151+
final LocalPlaylistManager playlistManager =
152+
new LocalPlaylistManager(NewPipeDatabase.getInstance(requireContext()));
153+
final List<Long> duplicateIds = playlistManager.getDuplicatePlaylist(getStreamEntities()
154+
.get(0).getUrl()).blockingFirst();
155+
156+
if (view.getAdapter() == null) {
157+
return;
158+
}
159+
160+
final int count = view.getAdapter().getItemCount();
161+
for (int i = 0; i < count; i++) {
162+
if (view.findViewHolderForAdapterPosition(i) != null
163+
&& duplicateIds.contains(playlistAdapter.getItemId(i))) {
164+
view.findViewHolderForAdapterPosition(i).itemView
165+
.findViewById(R.id.checkmark2).setVisibility(View.VISIBLE);
166+
}
157167
}
158168
}
159169

0 commit comments

Comments
 (0)