From 7ea6a020dca0ce8f13c34b497275e3246315c4a3 Mon Sep 17 00:00:00 2001 From: linus_lee Date: Wed, 20 Aug 2014 14:27:50 -0700 Subject: [PATCH] Eleven: Fix a crash when clicking the fragment header caused by the section headers There was a mix beween the position of the underlying adapter and the wrapped adapter Change-Id: I3adee6606e4c2bb7e58288d1f67e714ed92e3599 --- src/com/cyngn/eleven/adapters/AlbumAdapter.java | 16 ++++++++++ src/com/cyngn/eleven/adapters/ArtistAdapter.java | 16 ++++++++++ src/com/cyngn/eleven/adapters/SongAdapter.java | 16 ++++++++++ .../eleven/sectionadapter/SectionAdapter.java | 35 ++++++++++++++++++++++ .../cyngn/eleven/ui/fragments/AlbumFragment.java | 13 ++++---- .../cyngn/eleven/ui/fragments/ArtistFragment.java | 13 ++++---- .../cyngn/eleven/ui/fragments/SongFragment.java | 13 ++++---- 7 files changed, 107 insertions(+), 15 deletions(-) diff --git a/src/com/cyngn/eleven/adapters/AlbumAdapter.java b/src/com/cyngn/eleven/adapters/AlbumAdapter.java index 21da11a..517d270 100644 --- a/src/com/cyngn/eleven/adapters/AlbumAdapter.java +++ b/src/com/cyngn/eleven/adapters/AlbumAdapter.java @@ -226,6 +226,22 @@ public class AlbumAdapter extends ArrayAdapter implements SectionAdapter. } /** + * Gets the item position for a given id + * @param id identifies the object + * @return the position if found, -1 otherwise + */ + @Override + public int getItemPosition(long id) { + for (int i = 0; i < getCount(); i++) { + if (getItem(i).mAlbumId == id) { + return i; + } + } + + return -1; + } + + /** * @param extra True to load line three and the background image, false * otherwise. */ diff --git a/src/com/cyngn/eleven/adapters/ArtistAdapter.java b/src/com/cyngn/eleven/adapters/ArtistAdapter.java index 11e24d8..e861279 100644 --- a/src/com/cyngn/eleven/adapters/ArtistAdapter.java +++ b/src/com/cyngn/eleven/adapters/ArtistAdapter.java @@ -218,6 +218,22 @@ public class ArtistAdapter extends ArrayAdapter implements SectionAdapte } /** + * Gets the item position for a given id + * @param id identifies the object + * @return the position if found, -1 otherwise + */ + @Override + public int getItemPosition(long id) { + for (int i = 0; i < getCount(); i++) { + if (getItem(i).mArtistId == id) { + return i; + } + } + + return -1; + } + + /** * @param extra True to load line three and the background image, false * otherwise. */ diff --git a/src/com/cyngn/eleven/adapters/SongAdapter.java b/src/com/cyngn/eleven/adapters/SongAdapter.java index 92bbacd..857e53b 100644 --- a/src/com/cyngn/eleven/adapters/SongAdapter.java +++ b/src/com/cyngn/eleven/adapters/SongAdapter.java @@ -143,4 +143,20 @@ public class SongAdapter extends ArrayAdapter implements SectionAdapter.Ba */ public void flush() { } + + /** + * Gets the item position for a given id + * @param id identifies the object + * @return the position if found, -1 otherwise + */ + @Override + public int getItemPosition(long id) { + for (int i = 0; i < getCount(); i++) { + if (getItem(i).mSongId == id) { + return i; + } + } + + return -1; + } } diff --git a/src/com/cyngn/eleven/sectionadapter/SectionAdapter.java b/src/com/cyngn/eleven/sectionadapter/SectionAdapter.java index 0c47d43..17d461b 100644 --- a/src/com/cyngn/eleven/sectionadapter/SectionAdapter.java +++ b/src/com/cyngn/eleven/sectionadapter/SectionAdapter.java @@ -33,6 +33,7 @@ public class SectionAdapter= 0) { + return getExternalPosition(internalPosition); + } + + return -1; + } } diff --git a/src/com/cyngn/eleven/ui/fragments/AlbumFragment.java b/src/com/cyngn/eleven/ui/fragments/AlbumFragment.java index f36033a..3ba8326 100644 --- a/src/com/cyngn/eleven/ui/fragments/AlbumFragment.java +++ b/src/com/cyngn/eleven/ui/fragments/AlbumFragment.java @@ -355,12 +355,15 @@ public class AlbumFragment extends Fragment implements LoaderCallbacks