繁体   English   中英

更改imagebutton资源onclick

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM