@@ -97,6 +97,7 @@ public class PlaylistFragment extends Fragment
9797 */
9898 private ListType .ItemsAll lastGetItemResult = null ;
9999 private PlayerType .GetActivePlayersReturnType lastGetActivePlayerResult ;
100+ private PlayerType .PropertyValue lastGetPropertiesResult = null ;
100101 private final HashMap <String , PlaylistHolder > playlists = new HashMap <>();
101102
102103 private enum PLAYER_STATE {
@@ -253,6 +254,7 @@ public void onPlayerPlay(PlayerType.GetActivePlayersReturnType getActivePlayerRe
253254 playerState = PLAYER_STATE .PLAYING ;
254255
255256 lastGetItemResult = getItemResult ;
257+ lastGetPropertiesResult = getPropertiesResult ;
256258 lastGetActivePlayerResult = getActivePlayerResult ;
257259
258260 if (!userSelectedTab ) {
@@ -278,6 +280,7 @@ public void onPlayerPause(PlayerType.GetActivePlayersReturnType getActivePlayerR
278280 playerState = PLAYER_STATE .PAUSED ;
279281
280282 lastGetItemResult = getItemResult ;
283+ lastGetPropertiesResult = getPropertiesResult ;
281284 lastGetActivePlayerResult = getActivePlayerResult ;
282285
283286 if (!userSelectedTab ) {
@@ -294,6 +297,7 @@ public void onPlayerStop() {
294297 if (lastGetActivePlayerResult != null )
295298 binding .playlistsBar .setIsPlaying (lastGetActivePlayerResult .type , false );
296299
300+ lastGetPropertiesResult = null ;
297301 displayPlaylist ();
298302
299303 binding .playlist .clearChoices ();
@@ -436,19 +440,14 @@ private void highlightCurrentlyPlayingItem() {
436440 if (!binding .playlistsBar .getSelectedPlaylistType ().contentEquals (lastGetActivePlayerResult .type ) ||
437441 holder == null )
438442 return ;
439-
443+
444+ int playlistActivePosition = lastGetPropertiesResult == null ? -1 : lastGetPropertiesResult .position ;
440445 List <ListType .ItemsAll > playlistItems = holder .getPlaylistResult .items ;
441- for (int i = 0 ; i < playlistItems .size (); i ++) {
442- if ((playlistItems .get (i ).id == lastGetItemResult .id ) &&
443- (playlistItems .get (i ).type .equals (lastGetItemResult .type ))) {
444-
445- //When user is dragging an item it is very annoying when we change the list position
446- if (!binding .playlist .isItemBeingDragged ()) {
447- binding .playlist .setSelection (i );
448- }
449-
450- binding .playlist .setItemChecked (i , true );
446+ if (playlistActivePosition >= 0 && playlistActivePosition < playlistItems .size ()) {
447+ if (!binding .playlist .isItemBeingDragged ()) {
448+ binding .playlist .setSelection (playlistActivePosition );
451449 }
450+ binding .playlist .setItemChecked (playlistActivePosition , true );
452451 }
453452 }
454453
0 commit comments