如何在recyclerview内的视频视图上设置点击监听器

时间:2019-04-19 12:51:28

标签: android

我有一个Recyclerview,其中包含图像,GIF和视频。所有这些元素都必须具有单击侦听器,才能在另一个片段中全屏打开它们。对于图片和gif,一切正常,但是使用videoview时,单击3次以上会触发onClick。如果我在触摸式监听器上使用,即使我滚动了recyclerview,也会被触发。 我还附加了一个媒体控制器,因为在recyclerview中,我必须使视频静音。

public void setVideo(String url, final int position){
            MediaController mc = new MediaController(mContext);
            mc.setVisibility(View.GONE);
            mc.setAnchorView(videoContent);
            mc.setMediaPlayer(videoContent);
            videoContent.setMediaController(mc);
            String _path = url;
            Uri videoUri = Uri.parse(url);

            videoContent.setVideoURI(videoUri);
            videoContent.setOnPreparedListener(PreparedListener);

            videoContent.setOnTouchListener(new View.OnTouchListener() {
                @Override
                public boolean onTouch(View v, MotionEvent event) {

                    if(event.getAction() == MotionEvent.ACTION_DOWN){
                        Log.e("@@@", "Video Touched");
                        //listener.onMediaPressed(position);
                    }
                    return true;
                }
            });
        }

    MediaPlayer.OnPreparedListener PreparedListener = new MediaPlayer.OnPreparedListener(){

        @Override
        public void onPrepared(MediaPlayer m) {
            try {
                if (m.isPlaying()) {
                    m.stop();
                    m.release();
                    m = new MediaPlayer();
                }
                m.setVolume(0f, 0f);
                m.setLooping(true);
                m.start();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    };

1 个答案:

答案 0 :(得分:0)

您将在适配器中设置onClickListener

public void onBindViewHolder(@NonNull final MyViewHolder holder, int i) {
 holder.video.setOnClickListener(v -> {
       //Do stuff
        });
}