Defer to TabHost to retrieve MediaAdapters
This commit is contained in:
parent
ebcae9e507
commit
1b1b83127c
@ -42,7 +42,6 @@ import android.view.View;
|
|||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
import android.view.Window;
|
import android.view.Window;
|
||||||
import android.widget.AdapterView;
|
import android.widget.AdapterView;
|
||||||
import android.widget.BaseAdapter;
|
|
||||||
import android.widget.LinearLayout;
|
import android.widget.LinearLayout;
|
||||||
import android.widget.ListView;
|
import android.widget.ListView;
|
||||||
import android.widget.TabHost;
|
import android.widget.TabHost;
|
||||||
@ -54,16 +53,28 @@ public class SongSelector extends TabActivity implements AdapterView.OnItemClick
|
|||||||
private TextView mTextFilter;
|
private TextView mTextFilter;
|
||||||
private View mClearButton;
|
private View mClearButton;
|
||||||
private ViewGroup mLimiters;
|
private ViewGroup mLimiters;
|
||||||
private MediaAdapter[] mAdapters = new MediaAdapter[3];
|
|
||||||
|
|
||||||
private int mDefaultAction;
|
private int mDefaultAction;
|
||||||
private boolean mDefaultIsLastAction;
|
private boolean mDefaultIsLastAction;
|
||||||
|
|
||||||
private void initializeListView(int id, BaseAdapter adapter)
|
private ListView getList(int tab)
|
||||||
|
{
|
||||||
|
return (ListView)mTabHost.getTabContentView().getChildAt(tab);
|
||||||
|
}
|
||||||
|
|
||||||
|
private MediaAdapter getAdapter(int tab)
|
||||||
|
{
|
||||||
|
return (MediaAdapter)getList(tab).getAdapter();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void initializeList(int id, Song[] songs, int lineA, int lineB, View.OnClickListener expanderListener)
|
||||||
{
|
{
|
||||||
ListView view = (ListView)findViewById(id);
|
ListView view = (ListView)findViewById(id);
|
||||||
view.setOnItemClickListener(this);
|
view.setOnItemClickListener(this);
|
||||||
view.setOnCreateContextMenuListener(this);
|
view.setOnCreateContextMenuListener(this);
|
||||||
|
|
||||||
|
MediaAdapter adapter = new MediaAdapter(SongSelector.this, songs, lineA, lineB);
|
||||||
|
adapter.setExpanderListener(this);
|
||||||
view.setAdapter(adapter);
|
view.setAdapter(adapter);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -117,17 +128,10 @@ public class SongSelector extends TabActivity implements AdapterView.OnItemClick
|
|||||||
{
|
{
|
||||||
Song[] songs = Song.getAllSongMetadata();
|
Song[] songs = Song.getAllSongMetadata();
|
||||||
|
|
||||||
mAdapters[0] = new MediaAdapter(SongSelector.this, Song.filter(songs, new Song.ArtistComparator()), Song.FIELD_ARTIST, -1);
|
initializeList(R.id.artist_list, Song.filter(songs, new Song.ArtistComparator()), Song.FIELD_ARTIST, -1, SongSelector.this);
|
||||||
mAdapters[0].setExpanderListener(SongSelector.this);
|
initializeList(R.id.album_list, Song.filter(songs, new Song.AlbumComparator()), Song.FIELD_ALBUM, Song.FIELD_ARTIST, SongSelector.this);
|
||||||
initializeListView(R.id.artist_list, mAdapters[0]);
|
|
||||||
|
|
||||||
mAdapters[1] = new MediaAdapter(SongSelector.this, Song.filter(songs, new Song.AlbumComparator()), Song.FIELD_ALBUM, Song.FIELD_ARTIST);
|
|
||||||
mAdapters[1].setExpanderListener(SongSelector.this);
|
|
||||||
initializeListView(R.id.album_list, mAdapters[1]);
|
|
||||||
|
|
||||||
Arrays.sort(songs, new Song.TitleComparator());
|
Arrays.sort(songs, new Song.TitleComparator());
|
||||||
mAdapters[2] = new MediaAdapter(SongSelector.this, songs, Song.FIELD_TITLE, Song.FIELD_ARTIST);
|
initializeList(R.id.song_list, songs, Song.FIELD_TITLE, Song.FIELD_ARTIST, null);
|
||||||
initializeListView(R.id.song_list, mAdapters[2]);
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -168,7 +172,7 @@ public class SongSelector extends TabActivity implements AdapterView.OnItemClick
|
|||||||
|
|
||||||
public void onTextChanged(CharSequence s, int start, int before, int count)
|
public void onTextChanged(CharSequence s, int start, int before, int count)
|
||||||
{
|
{
|
||||||
MediaAdapter adapter = mAdapters[mTabHost.getCurrentTab()];
|
MediaAdapter adapter = getAdapter(mTabHost.getCurrentTab());
|
||||||
if (adapter != null)
|
if (adapter != null)
|
||||||
adapter.getFilter().filter(s);
|
adapter.getFilter().filter(s);
|
||||||
}
|
}
|
||||||
@ -180,7 +184,7 @@ public class SongSelector extends TabActivity implements AdapterView.OnItemClick
|
|||||||
|
|
||||||
mLimiters.removeAllViews();
|
mLimiters.removeAllViews();
|
||||||
|
|
||||||
MediaAdapter adapter = mAdapters[mTabHost.getCurrentTab()];
|
MediaAdapter adapter = getAdapter(mTabHost.getCurrentTab());
|
||||||
if (adapter == null)
|
if (adapter == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@ -230,15 +234,17 @@ public class SongSelector extends TabActivity implements AdapterView.OnItemClick
|
|||||||
|
|
||||||
if (view instanceof TextView) {
|
if (view instanceof TextView) {
|
||||||
int newField = data.field == Song.FIELD_ARTIST ? -1 : data.field - 1;
|
int newField = data.field == Song.FIELD_ARTIST ? -1 : data.field - 1;
|
||||||
for (int i = mAdapters.length; --i != -1; ) {
|
for (int i = mTabHost.getChildCount(); --i != -1; ) {
|
||||||
if (mAdapters[i].getLimiterField() >= data.field)
|
MediaAdapter adapter = getAdapter(i);
|
||||||
mAdapters[i].setLimiter(newField, mAdapters[i].getLimiterMedia());
|
if (adapter.getLimiterField() >= data.field)
|
||||||
|
adapter.setLimiter(newField, adapter.getLimiterMedia());
|
||||||
}
|
}
|
||||||
updateLimiterViews();
|
updateLimiterViews();
|
||||||
} else {
|
} else {
|
||||||
for (int i = data.field; i != 3; ++i) {
|
for (int i = data.field; i != 3; ++i) {
|
||||||
mAdapters[i].setLimiter(data.field, data.media);
|
MediaAdapter adapter = getAdapter(i);
|
||||||
mAdapters[i].hideAll();
|
adapter.setLimiter(data.field, data.media);
|
||||||
|
adapter.hideAll();
|
||||||
}
|
}
|
||||||
mTabHost.setCurrentTab(data.field);
|
mTabHost.setCurrentTab(data.field);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user