[英]Change imagebutton resource onclick
我想更改与ImageButton
onClick关联的图像。 我正在尝试这样做,但它不起作用:
ImageButton play;
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
View vi = convertView;
if (vi == null)
vi = inflater.inflate(R.layout.listview_row, null);
play = (ImageButton) vi.findViewById(R.id.imagePlay);
play.setImageResource(R.drawable.play);
play.invalidate();
play.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if(isPlaying){
mMediaPlayer.stop();
mMediaPlayer.release();
mMediaPlayer = null;
play.setImageResource(R.drawable.play);
play.invalidate();
isPlaying = false;
}
else{
mMediaPlayer = MediaPlayer.create(context, songs[position]);
mMediaPlayer.start();
isPlaying = true;
play.setImageResource(R.drawable.pause);
play.invalidate();
mMediaPlayer.setOnCompletionListener(new OnCompletionListener() {
public void onCompletion(MediaPlayer mp) {
isPlaying = false;
play.setImageResource(R.drawable.play);
play.invalidate();
}
});
}
}
});
这样,图像将保持为播放按钮,而不会在暂停按钮中更改。 我该如何解决?
您已经在getView方法之外定义了ImageButton play
。 随着添加的每一行,您将为其分配一个新的ImageButton(添加的行中的一个)。
然后触发onClick(View v)
方法时, play
是最后添加的按钮。 因此,分配您单击的按钮以首先在onClick()
方法中play
。
ImageButton play;
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
// SAME
play.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
play = (ImageButton) v.findViewById(R.id.imagePlay);
if(isPlaying){
// SAME
}
else{
// SAME
}
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.