Respond to clicks on the expanders

This commit is contained in:
Christopher Eby 2010-03-08 22:14:50 -06:00
parent 03e11a5fee
commit 958ffcc852
3 changed files with 24 additions and 6 deletions

View File

@ -30,6 +30,7 @@ import android.util.DisplayMetrics;
import android.util.TypedValue; import android.util.TypedValue;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.widget.BaseAdapter; import android.widget.BaseAdapter;
import android.widget.Filter; import android.widget.Filter;
import android.widget.Filterable; import android.widget.Filterable;
@ -39,7 +40,6 @@ import android.widget.TextView;
public abstract class AbstractAdapter extends BaseAdapter implements Filterable { public abstract class AbstractAdapter extends BaseAdapter implements Filterable {
public static final int ONE_LINE = 0x1; public static final int ONE_LINE = 0x1;
public static final int NO_EXPANDER = 0x2;
private Context mContext; private Context mContext;
private List<Song> mObjects; private List<Song> mObjects;
@ -49,6 +49,7 @@ public abstract class AbstractAdapter extends BaseAdapter implements Filterable
private int mPadding; private int mPadding;
private int mDrawFlags; private int mDrawFlags;
private int mFieldCount; private int mFieldCount;
private OnClickListener mExpanderListener;
public AbstractAdapter(Context context, Song[] allObjects, int drawFlags, int numFields) public AbstractAdapter(Context context, Song[] allObjects, int drawFlags, int numFields)
{ {
@ -62,6 +63,11 @@ public abstract class AbstractAdapter extends BaseAdapter implements Filterable
mPadding = (int)mSize / 2; mPadding = (int)mSize / 2;
} }
public void setExpanderListener(View.OnClickListener listener)
{
mExpanderListener = listener;
}
@Override @Override
public boolean hasStableIds() public boolean hasStableIds()
{ {
@ -84,7 +90,7 @@ public abstract class AbstractAdapter extends BaseAdapter implements Filterable
RelativeLayout.LayoutParams params; RelativeLayout.LayoutParams params;
if ((mDrawFlags & NO_EXPANDER) == 0) { if (mExpanderListener != null) {
params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
params.addRule(RelativeLayout.ALIGN_PARENT_RIGHT); params.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
params.addRule(RelativeLayout.CENTER_VERTICAL); params.addRule(RelativeLayout.CENTER_VERTICAL);
@ -93,6 +99,10 @@ public abstract class AbstractAdapter extends BaseAdapter implements Filterable
button.setImageResource(R.drawable.expander_arrow); button.setImageResource(R.drawable.expander_arrow);
button.setId(3); button.setId(3);
button.setLayoutParams(params); button.setLayoutParams(params);
button.setTag(R.id.list, mFieldCount);
button.setTag(R.id.song, get(position));
button.setOnClickListener(mExpanderListener);
view.addView(button); view.addView(button);
} }

View File

@ -32,7 +32,7 @@ public class SongAdapter extends AbstractAdapter {
public SongAdapter(Context context, Song[] allSongs) public SongAdapter(Context context, Song[] allSongs)
{ {
super(ContextApplication.getContext(), sort(allSongs), NO_EXPANDER, 3); super(ContextApplication.getContext(), sort(allSongs), 0, 3);
} }
@Override @Override

View File

@ -63,8 +63,10 @@ public class SongSelector extends TabActivity implements AdapterView.OnItemClick
final Song[] songs = Song.getAllSongMetadata(); final Song[] songs = Song.getAllSongMetadata();
mAdapters[0] = new ArtistAdapter(this, songs); mAdapters[0] = new ArtistAdapter(this, songs);
mAdapters[0].setExpanderListener(this);
ListView artistView = (ListView)findViewById(R.id.artist_list); ListView artistView = (ListView)findViewById(R.id.artist_list);
artistView.setOnItemClickListener(this);
artistView.setAdapter(mAdapters[0]); artistView.setAdapter(mAdapters[0]);
mTextFilter = (TextView)findViewById(R.id.filter_text); mTextFilter = (TextView)findViewById(R.id.filter_text);
@ -87,11 +89,11 @@ public class SongSelector extends TabActivity implements AdapterView.OnItemClick
public void run() public void run()
{ {
mAdapters[1] = new AlbumAdapter(SongSelector.this, songs); mAdapters[1] = new AlbumAdapter(SongSelector.this, songs);
mAdapters[2] = new SongAdapter(SongSelector.this, songs); mAdapters[1].setExpanderListener(SongSelector.this);
ListView albumView = (ListView)findViewById(R.id.album_list); ListView albumView = (ListView)findViewById(R.id.album_list);
albumView.setAdapter(mAdapters[1]); albumView.setAdapter(mAdapters[1]);
mAdapters[2] = new SongAdapter(SongSelector.this, songs);
ListView songView = (ListView)findViewById(R.id.song_list); ListView songView = (ListView)findViewById(R.id.song_list);
songView.setAdapter(mAdapters[2]); songView.setAdapter(mAdapters[2]);
songView.setOnItemClickListener(SongSelector.this); songView.setOnItemClickListener(SongSelector.this);
@ -133,6 +135,12 @@ public class SongSelector extends TabActivity implements AdapterView.OnItemClick
public void onClick(View view) public void onClick(View view)
{ {
mTextFilter.setText(""); if (view == mTextFilter) {
mTextFilter.setText("");
} else {
Object list = view.getTag(R.id.list);
if (list != null)
mTabHost.setCurrentTab((Integer)list);
}
} }
} }