我的ListView
看起来像这样:
..我一直在使用此代码来处理传入的点击事件以开始/停止音乐播放:
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
...
previewBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
boolean isToggled = ((ToggleButton) view).isChecked();
Mp3File music = getItem(position);
if (!isToggled) {
callbackActivity.onMusicPreviewStopped();
((ToggleButton) view).setChecked(false);
} else {
callbackActivity.onMusicPreviewRequested(music);
}
}
});
...
哪种效果非常好TBH。但我有这样的习惯,即让类实现所需的接口,而不是为每个创建的视图创建一个新接口。
如果我选择忽略点击项目的position
,那就非常直截了当。遗憾的是,我需要position
来正确识别哪个Mp3File
正在播放并停止播放。
你能否就我如何使其发挥作用提出一些建议?
..或者这是唯一的方法吗?
答案 0 :(得分:1)
离开我的头顶我建议将位置设置为按钮标签。然后为该类实现onClick一次,并使用v.getTag()
检索按钮的位置
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
...
previewBtn.setTag(position);
...
@Override
public void onClick(View view) {
boolean isToggled = ((ToggleButton) view).isChecked();
Mp3File music = getItem(view.getTag());
if (!isToggled) {
callbackActivity.onMusicPreviewStopped();
((ToggleButton) view).setChecked(false);
} else {
callbackActivity.onMusicPreviewRequested(music);
}
}