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;

}