Не могу приостановить медиаплеер от адаптера - PullRequest
0 голосов
/ 23 июня 2019

У меня есть просмотр списка в моей деятельности. Каждый элемент списка содержит кнопки воспроизведения / паузы, и эти кнопки запускают воспроизведение звука, вызывая метод активности, такой как 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));
    }
}

И это просто не работает. медиаплеер не останавливается.

...