|
16 | 16 | import org.schabi.newpipe.R; |
17 | 17 | import org.schabi.newpipe.database.playlist.PlaylistMetadataEntry; |
18 | 18 | import org.schabi.newpipe.database.stream.model.StreamEntity; |
| 19 | +import org.schabi.newpipe.fragments.OnScrollBelowItemsListener; |
19 | 20 | import org.schabi.newpipe.local.LocalItemListAdapter; |
20 | 21 | import org.schabi.newpipe.local.playlist.LocalPlaylistManager; |
21 | 22 |
|
22 | | -import java.util.HashMap; |
23 | 23 | import java.util.List; |
24 | 24 |
|
25 | 25 | import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers; |
@@ -126,34 +126,44 @@ private void onPlaylistsReceived(@NonNull final List<PlaylistMetadataEntry> play |
126 | 126 | playlistAdapter.addItems(playlists); |
127 | 127 | playlistRecyclerView.setVisibility(View.VISIBLE); |
128 | 128 |
|
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 | + } |
133 | 133 |
|
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); |
137 | 146 | } |
| 147 | + }, 50); |
| 148 | + } |
138 | 149 |
|
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 | + } |
157 | 167 | } |
158 | 168 | } |
159 | 169 |
|
|
0 commit comments