ListView,项目内的按钮
ListView, Button inside item
伙计们!我有一个 ListView,当然还有一个在此列表中带有按钮的项目。我想知道如何为该按钮设置一个侦听器,然后如何从确切位置的列表项中收集数据? List item
我想按下 "like button",然后收集 ArrayList 的确切元素的信息。我怎么知道那个元素在哪个位置?
这是一个适配器 class。
public class PlayerListAdapter extends ArrayAdapter<Audio> {
private LayoutInflater layoutInflater;
public PlayerListAdapter(Context aContext, ArrayList<Audio> listData) {
super(aContext, 0, listData);
layoutInflater = LayoutInflater.from(aContext);
}
public View getView(int position, View convertView, ViewGroup parent) {
ViewAudio viewAudio;
if (convertView == null) {
convertView = layoutInflater.inflate(R.layout.item_list_audio, null);
viewAudio = new ViewAudio();
viewAudio.song_tittle = (TextView) convertView.findViewById(R.id.song_tittle);
viewAudio.song_author = (TextView) convertView.findViewById(R.id.song_author);
viewAudio.song_duration = (TextView) convertView.findViewById(R.id.song_duration);
convertView.setTag(viewAudio);
} else {
viewAudio = (ViewAudio) convertView.getTag();
}
Audio audio = (Audio) getItem(position);
viewAudio.song_tittle.setText(audio.getTitle());
viewAudio.song_author.setText(audio.getArtist());
viewAudio.song_duration.setText(Duration.secondsToTimer(audio.getDuration()));
return convertView;
}
static class ViewAudio {
TextView song_tittle;
TextView song_author;
TextView song_duration;
}
public View getView(final int position, View convertView, ViewGroup parent) {
ViewAudio viewAudio;
if (convertView == null) {
convertView = layoutInflater.inflate(R.layout.item_list_audio, null);
viewAudio = new ViewAudio();
viewAudio.song_tittle = (TextView) convertView.findViewById(R.id.song_tittle);
viewAudio.song_author = (TextView) convertView.findViewById(R.id.song_author);
viewAudio.song_duration = (TextView) convertView.findViewById(R.id.song_duration);
convertView.setTag(viewAudio);
} else {
viewAudio = (ViewAudio) convertView.getTag();
}
Audio audio = (Audio) getItem(position);
viewAudio.song_tittle.setText(audio.getTitle());
viewAudio.song_author.setText(audio.getArtist());
viewAudio.song_duration.setText(Duration.secondsToTimer(audio.getDuration()));
button.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v){
Log.e("position", "The position here is" + position);
//TODO you can get your audio data by listData.get(position) here
}
});
return convertView;
}
伙计们!我有一个 ListView,当然还有一个在此列表中带有按钮的项目。我想知道如何为该按钮设置一个侦听器,然后如何从确切位置的列表项中收集数据? List item
我想按下 "like button",然后收集 ArrayList 的确切元素的信息。我怎么知道那个元素在哪个位置?
这是一个适配器 class。
public class PlayerListAdapter extends ArrayAdapter<Audio> {
private LayoutInflater layoutInflater;
public PlayerListAdapter(Context aContext, ArrayList<Audio> listData) {
super(aContext, 0, listData);
layoutInflater = LayoutInflater.from(aContext);
}
public View getView(int position, View convertView, ViewGroup parent) {
ViewAudio viewAudio;
if (convertView == null) {
convertView = layoutInflater.inflate(R.layout.item_list_audio, null);
viewAudio = new ViewAudio();
viewAudio.song_tittle = (TextView) convertView.findViewById(R.id.song_tittle);
viewAudio.song_author = (TextView) convertView.findViewById(R.id.song_author);
viewAudio.song_duration = (TextView) convertView.findViewById(R.id.song_duration);
convertView.setTag(viewAudio);
} else {
viewAudio = (ViewAudio) convertView.getTag();
}
Audio audio = (Audio) getItem(position);
viewAudio.song_tittle.setText(audio.getTitle());
viewAudio.song_author.setText(audio.getArtist());
viewAudio.song_duration.setText(Duration.secondsToTimer(audio.getDuration()));
return convertView;
}
static class ViewAudio {
TextView song_tittle;
TextView song_author;
TextView song_duration;
}
public View getView(final int position, View convertView, ViewGroup parent) { ViewAudio viewAudio;
if (convertView == null) {
convertView = layoutInflater.inflate(R.layout.item_list_audio, null);
viewAudio = new ViewAudio();
viewAudio.song_tittle = (TextView) convertView.findViewById(R.id.song_tittle);
viewAudio.song_author = (TextView) convertView.findViewById(R.id.song_author);
viewAudio.song_duration = (TextView) convertView.findViewById(R.id.song_duration);
convertView.setTag(viewAudio);
} else {
viewAudio = (ViewAudio) convertView.getTag();
}
Audio audio = (Audio) getItem(position);
viewAudio.song_tittle.setText(audio.getTitle());
viewAudio.song_author.setText(audio.getArtist());
viewAudio.song_duration.setText(Duration.secondsToTimer(audio.getDuration()));
button.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v){
Log.e("position", "The position here is" + position);
//TODO you can get your audio data by listData.get(position) here
}
});
return convertView;
}