Avoid using getTag(id)

It's not in Android 1.5
This commit is contained in:
Christopher Eby 2010-03-11 02:00:38 -06:00
parent 6bf23b0237
commit 03821bbae5
4 changed files with 47 additions and 31 deletions

View File

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<item type="id" name="media" />
<item type="id" name="field" />
<item type="id" name="limiter_field" />
</resources>

View File

@ -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);

View File

@ -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;
}
}

View File

@ -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);
}
}
}