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

View File

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

View File

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