не работает на клике, который находится в recyclerView - PullRequest
1 голос
/ 30 марта 2019

У меня есть переработчикПросмотреть в чате!Я хочу записать голос и воспроизвести его в чате ... для этого у меня есть раскладка для воспроизведения и приостановки голоса ... Мне нужна позиция голоса в программе просмотра обзоров.

Я попробовал два метода: 1-msgRecyclerView.addOnItemTouchListener, но в этом случае я не могу управлять воспроизведением и приостановкой голоса с помощью одной кнопки 2 - onClick для воспроизведения и onClick для паузы таким образом, у меня нет позиции голоса в recyclerView

    pos=msgRecyclerView.getChildLayoutPosition(view);

останавливает приложение

msgRecyclerView.addOnItemTouchListener(new RecyclerItemClickListener(getApplicationContext(), msgRecyclerView, new RecyclerItemClickListener.OnItemClickListener() {
                    @Override
                    public void onItemClick(View view, int position) {


                    List<Messages> messages = new DB_Helper(getApplicationContext()).getListOfMessages("MsgPos = " + position + " and DriverID = " + 2 + " and OperatorID = " + id);
                    String locPath = messages.get(0).getLocalPath();
                    int msgType = messages.get(0).getMsgType();
                    if (msgType == 1) {
                        Intent intent = new Intent(getApplicationContext(), ImageActivity.class);
                        intent.putExtra("picture", messages.get(0).getImage());
                        startActivity(intent);


                    } else if (msgType == 2) {
                        //video
                        //String VideoUri = String.valueOf(d.getDuration());
                        Intent intent = new Intent(getApplicationContext(), VideoActivity.class);
                        intent.putExtra("Video", locPath);
                        startActivity(intent);

                    } else if (msgType == 3) {

                        pos=position;


                }

                @Override
                public void onLongItemClick(View view, int position) {
                    // do whatever
                }
            })
    );




public void playVoice(View view)
    {
        if(mediaPlayer!=null)
            mediaPlayer.stop();
        List<Messages> messages = new DB_Helper(getApplicationContext()).getListOfMessages("MsgPos = " + pos + " and DriverID = " + 2 + " and OperatorID = " + id);
        mediaPlayer = MediaPlayer.create(getApplicationContext(), Uri.parse(messages.get(0).getLocalPath()));
        mediaPlayer.start();
    }



 public void pauseVoice(View view)
    {
     //   pos=msgRecyclerView.getChildLayoutPosition(view);
        List<Messages> messages = new DB_Helper(getApplicationContext()).getListOfMessages("MsgPos = " + pos + " and DriverID = " + 2 + " and OperatorID = " + id);
        mediaPlayer = MediaPlayer.create(getApplicationContext(), Uri.parse(messages.get(0).getLocalPath()));
        mediaPlayer.stop();
    }

В этом режиме функция щелчка не работает ..

Помогите, пожалуйста, сыграть и остановить голос в чате

1 Ответ

0 голосов
/ 30 марта 2019

Вы можете попробовать метод onclick в вашем адаптере.Как это;

@Override
public void onBindViewHolder(final MyViewHolder holder, final int position) {
    holder.myView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            //your code
        }
    });
}
...