diff --git a/res/values/ids.xml b/res/values/ids.xml deleted file mode 100644 index 1aacb351..00000000 --- a/res/values/ids.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/src/org/kreed/vanilla/MediaAdapter.java b/src/org/kreed/vanilla/MediaAdapter.java index dbf2c46f..d62a59fa 100644 --- a/src/org/kreed/vanilla/MediaAdapter.java +++ b/src/org/kreed/vanilla/MediaAdapter.java @@ -84,7 +84,7 @@ public class MediaAdapter extends BaseAdapter implements Filterable { view = new MediaView(mContext, flags); if (mExpanderListener != null) - view.setupExpander(mPrimaryField, mExpanderListener); + view.setExpanderOnClickListener(mExpanderListener); } view.updateMedia(get(position), mPrimaryField, mSecondaryField); diff --git a/src/org/kreed/vanilla/MediaView.java b/src/org/kreed/vanilla/MediaView.java index dbca9414..e3a1b173 100644 --- a/src/org/kreed/vanilla/MediaView.java +++ b/src/org/kreed/vanilla/MediaView.java @@ -126,12 +126,10 @@ public class MediaView extends ViewGroup { mPrimaryLine.layout(mPadding, top, mPadding + textWidth, top + actualHeight); } - public void setupExpander(int field, View.OnClickListener listener) + public void setExpanderOnClickListener(View.OnClickListener listener) { - if (mExpander != null) { - mExpander.setTag(R.id.field, field); + if (mExpander != null) mExpander.setOnClickListener(listener); - } } public void updateMedia(Song song, int primaryField, int secondaryField) @@ -140,7 +138,29 @@ public class MediaView extends ViewGroup { mPrimaryLine.setText(song.getField(primaryField)); if (mSecondaryLine != null) mSecondaryLine.setText(song.getField(secondaryField)); - if (mExpander != null) - mExpander.setTag(R.id.media, song); + if (mExpander != null) { + ExpanderData data = null; + try { + data = (ExpanderData)mExpander.getTag(); + } catch (ClassCastException e) { + } + + if (data == null) { + data = new ExpanderData(primaryField); + mExpander.setTag(data); + } + + data.media = song; + } + } + + public static class ExpanderData { + public ExpanderData(int field) + { + this.field = field; + } + + public int field; + public Song media; } } \ No newline at end of file diff --git a/src/org/kreed/vanilla/SongSelector.java b/src/org/kreed/vanilla/SongSelector.java index 9311d40d..7e149b61 100644 --- a/src/org/kreed/vanilla/SongSelector.java +++ b/src/org/kreed/vanilla/SongSelector.java @@ -203,7 +203,7 @@ public class SongSelector extends TabActivity implements AdapterView.OnItemClick view.setBackgroundDrawable(background); view.setLayoutParams(params); view.setPadding(5, 2, 5, 2); - view.setTag(R.id.limiter_field, i); + view.setTag(new MediaView.ExpanderData(i)); view.setOnClickListener(this); mLimiters.addView(view); } @@ -219,24 +219,26 @@ public class SongSelector extends TabActivity implements AdapterView.OnItemClick if (view == mClearButton) { mTextFilter.setText(""); } else { - Object fieldObj = view.getTag(R.id.field); - if (fieldObj != null) { - int field = (Integer)fieldObj; - Song media = (Song)view.getTag(R.id.media); - for (int i = field; i != 3; ++i) - mAdapters[i].setLimiter(field, media); - mTabHost.setCurrentTab(field); - } else { - fieldObj = view.getTag(R.id.limiter_field); - if (fieldObj != null) { - int field = (Integer)fieldObj; - int newField = field == Song.FIELD_ARTIST ? -1 : field - 1; - for (int i = mAdapters.length; --i != -1; ) { - if (mAdapters[i].getLimiterField() >= field) - mAdapters[i].setLimiter(newField, mAdapters[i].getLimiterMedia()); - } - updateLimiterViews(); + MediaView.ExpanderData data = null; + try { + data = (MediaView.ExpanderData)view.getTag(); + } catch (ClassCastException e) { + } + + if (data == null) + return; + + if (view instanceof TextView) { + int newField = data.field == Song.FIELD_ARTIST ? -1 : data.field - 1; + for (int i = mAdapters.length; --i != -1; ) { + if (mAdapters[i].getLimiterField() >= data.field) + mAdapters[i].setLimiter(newField, mAdapters[i].getLimiterMedia()); } + updateLimiterViews(); + } else { + for (int i = data.field; i != 3; ++i) + mAdapters[i].setLimiter(data.field, data.media); + mTabHost.setCurrentTab(data.field); } } }