android - 播放/停止按钮工作正常。但可绘制背景无法正常工作

标签 android android-listview android-mediaplayer android-view

While playing second song我实现了播放/停止按钮。当我在播放时按下同一个按钮时,它应该停止或暂停 && 背景也会改变播放 --> 停止。当我在播放时按下另一个按钮时,它应该停止并播放新歌曲。它有效。但不能'不改变背景播放--->停止。帮帮我。如何获取上一首歌曲的 ID 值...

         public class MySimpleArrayAdapter extends ArrayAdapter<String>{
protected static final String TAG = "MySImpleArrayAdapter";
private final Context context;
protected ListView mListView;
int itemno;
 Boolean playing = false;
private MediaPlayer mp;
private LayoutInflater inflater;
 String[] values;  
 int songs []=                   {R.raw.sound1,R.raw.sound2,R.raw.sound3,R.raw.sound4,R.raw.sound5,R.raw.sound6,R.raw.sound7};
  static class ViewHolder {
        public TextView text;
        public Button button;

      }

  public MySimpleArrayAdapter(Context context, String[] values) {
    super(context, R.layout.activity_main, values);
    inflater = LayoutInflater.from(context);
    this.context = context;
    this.values = values;

  }


 @Override
  public View getView( int position, View rowView, ViewGroup parent) {

     if (rowView == null) {

          rowView = inflater.inflate(R.layout.activity_main, null);
          ViewHolder viewHolder = new ViewHolder();
          viewHolder.text = (TextView) rowView.findViewById(R.id.label);
                  viewHolder.button = (Button) rowView
              .findViewById(R.id.logo);

          rowView.setTag(viewHolder);
        }

        ViewHolder holder = (ViewHolder) rowView.getTag();
        String s = values[position];
      final int   pos=position;
        holder.text.setText(s);
        holder.button.setOnClickListener(
                new OnClickListener() {
                    public void onClick(View v) {
                         if(mp == null){

                              //  mListView.invalidateViews();
                                mp = MediaPlayer.create(context,songs[pos]);

                                mp.start();
                                playing = true;
                                itemno = pos;
                                //Toast.makeText(context, "ist playing", Toast.LENGTH_LONG).show();
                                v.setBackgroundResource(R.drawable.ok);

                            }
                            else {
                                if(mp.isPlaying() && itemno == pos){

                                    mp.pause();
                                    playing = false;

                                    v.setBackgroundResource(R.drawable.no);
                                }
                                else{
                                    if(playing == false  && itemno == pos){

                                        mp.start();
                                        playing = true;
                                        v.setBackgroundResource(R.drawable.ok);
                                    }
                                    else {

                                        mp.stop();

                                        mp.release();
                                        mp = MediaPlayer.create(context,songs[pos]);
                                        mp.start();
                                        playing = true;
                                        itemno = pos;
                                        //Toast.makeText(context, "playing", Toast.LENGTH_LONG).show();
                                        v.setBackgroundResource(R.drawable.ok);

                                    }if (!mp.isPlaying())
                                        v.setBackgroundResource(R.drawable.no);

                                }
                            }

                    }
                });






        return rowView;


      }

 @Override
 public boolean  areAllItemsEnabled() {
     return false;          
 }

 @Override
 public boolean isEnabled(int position) {
         return false;
 }

最佳答案

关于android - 播放/停止按钮工作正常。但可绘制背景无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17691387/

相关文章:

java - addView 在自定义 FrameLayout 中不可见但可点击

Android MediaPlayer 不播放声音

android - 在 BaseAdapter 中加载位图时如何修复错误 OutOfMemoryError

android - 在 Android 中的顶部 ListView 项目上方(以及最后一个项目下方)添加边距

android - 如何使用 FFmpegMediaPlayer ? (Windows|安卓工作室)

java - MediaRecorder stop() 失败

android - 如果帐户在 Firebase Android 的初始注册期间已与谷歌关联,请使用 Facebook 登录

java - DiffUtil.Callback 中 getChangePayload(int oldItemPosition, int newItemPosition) 的用法是什么

android - Android Studio 2.3.1 错误:(155) Original attribute defined here,

当列表开始滚动时,使用 CursorAdapter 的 Android ListView 会出现困惑