无法从适配器暂停Mediaplayer

时间:2019-06-23 13:52:25

标签: android android-listview android-mediaplayer

我的活动中有列表视图。每个listview项都包含播放/暂停按钮,这些按钮通过调用诸如MainActivity.play()之类的活动方法来开始音频播放,但是当我按下停止按钮时,它不起作用。为什么?

我试图在“活动”上添加暂停按钮,效果很好。

这是我按钮的onClickListener,位于适配器中

            view.findViewById(R.id.btnPause).setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    ((MainActivity)context).pause();
                }
            });

这是来自活动的暂停方法

    public void pause() {
                if(mediaPlayer.isPlaying()){
                    mediaPlayer.pause();
                } else {
                    mediaPlayer.start();
                }
    }

这是我的整个适配器

public class lvAdapter extends BaseAdapter {
    Context ctx;
    LayoutInflater lInflater;
    ArrayList<m> objects;
    lvAdapter(Context context, ArrayList<m> products) {
        ctx = context;
        objects = products;
        lInflater = (LayoutInflater) ctx
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }

    // кол-во элементов
    @Override
    public int getCount() {
        return objects.size();
    }

    // элемент по позиции
    @Override
    public Object getItem(int position) {
        return objects.get(position);
    }

    // id по позиции
    @Override
    public long getItemId(int position) {
        return position;
    }

    // пункт списка
    @SuppressLint("SetTextI18n")
    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {
        View view = convertView;
        if (view == null) {
                view = lInflater.inflate(R.layout.audioItem, parent, false);
        }
        final View finalView = view;
        view.findViewById(R.id.btnPlay).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                    File file = new File(ctx.getFilesDir() + "/voices/" + objects.get(position).t);
                    if (file.exists()) {
                            ((MainActivity)ctx).play(file.getPath());
                    }
                }
            });
        view.findViewById(R.id.btnPause).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                ((MainActivity)context).pause();
            }
        });
        return view;
    }
    m getProduct(int position) {
        return ((m) getItem(position));
    }
}

这是行不通的。媒体播放器没有暂停。

0 个答案:

没有答案