Respond to clicks on the expanders
This commit is contained in:
parent
03e11a5fee
commit
958ffcc852
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
{
|
||||
mTextFilter.setText("");
|
||||
if (view == mTextFilter) {
|
||||
mTextFilter.setText("");
|
||||
} else {
|
||||
Object list = view.getTag(R.id.list);
|
||||
if (list != null)
|
||||
mTabHost.setCurrentTab((Integer)list);
|
||||
}
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user