Android OnItemClickListener未响应回收器视图中的JSON项列表

Android OnItemClickListener未响应回收器视图中的JSON项列表,android,android-fragments,android-recyclerview,youtube-data-api,Android,Android Fragments,Android Recyclerview,Youtube Data Api,获取youtube视频列表的Json数据并将其分配给recycler view。recycler视图的适配器类如下所示适配器家庭1 public class AdapterHome2 extends RecyclerView.Adapter<AdapterHome2.YoutubeHolder> { private Context context; private List<VideoYT> videoList; private int sele

获取youtube视频列表的Json数据并将其分配给recycler view。recycler视图的适配器类如下所示适配器家庭1

public class AdapterHome2 extends RecyclerView.Adapter<AdapterHome2.YoutubeHolder> {

    private Context context;
    private List<VideoYT> videoList;
    private int selectedPosition = 0;


    public
    AdapterHome2(Context context, List<VideoYT> videoList) {
        this.context = context;
        this.videoList = videoList;
    }

    public
    void setSelectedPosition(int selectedPosition) {
        this.selectedPosition = selectedPosition;
        //when item selected notify the adapter
        notifyDataSetChanged();
    }

    @NonNull
    @Override
    public YoutubeHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        LayoutInflater inflater = LayoutInflater.from(context);
        View view = inflater.inflate(R.layout.row_item_home, parent, false);
        return new YoutubeHolder(view);
    }

    @Override
    public void onBindViewHolder(YoutubeHolder holder, int position) {
        VideoYT videoYT = videoList.get(position);
        YoutubeHolder yth = holder;
        yth.setData(videoYT);
    }

    @Override
    public
    int getItemCount() {
        return videoList.size();
    }

    class YoutubeHolder extends RecyclerView.ViewHolder {

        ImageView thumbnail;
        TextView judul, tanggal;

        public YoutubeHolder(@NonNull View itemView) {
            super(itemView);
            thumbnail = itemView.findViewById(R.id.iv_thumbnail);
            judul = itemView.findViewById(R.id.tv_judul);
            tanggal = itemView.findViewById(R.id.tv_tglUpdate);
        }

        public void setData(final VideoYT data) {
            final String getJudul = data.getSnippet().getTitle();
            String getTgl = data.getSnippet().getPublishedAt();
            String getThumb = data.getSnippet().getThumbnails().getMedium().getUrl();

            judul.setText(getJudul);
            tanggal.setText(ChangeTo.getTimeAgo(getTgl));
            Picasso.get()
                    .load(getThumb)
                    .placeholder(R.mipmap.ic_launcher)
                    .fit()
                    .centerCrop()
                    .into(thumbnail, new Callback() {
                        @Override
                        public void onSuccess() {
                            Log.d(TAG, "Thumbnail berhasil ditampilkan");
                        }

                        @Override
                        public void onError(Exception e) {
                            Log.e(TAG, "Thumbnail error: ", e);
                        }
                    });
        }
    }

}
这是一个谦卑的请求,请指导我,因为我正在努力实现这一点

public class Fragment2 extends Fragment {

    private List<VideoYT> videoList = new ArrayList<>();
    private LinearLayoutManager manager;
    private AdapterHome2 adapterHome2;
    private String nextPageToken = "";
    private boolean isScroll = false;
    private int currentItem, totalItem, scrollOutItem;

    private YouTubePlayer youTubePlayer;
    private YouTubePlayerSupportFragmentX youTubePlayerFragment;
    private RecyclerView rv;

    public Fragment2() {
    }


    @Override
    public    View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_1, container, false);
        // Inflate the layout for this fragment
        //Youtube Fragment

        youTubePlayerFragment = YouTubePlayerSupportFragmentX.newInstance();
        FragmentTransaction transaction = getChildFragmentManager().beginTransaction();
        transaction.add(R.id.youtube_layout, youTubePlayerFragment).commit();
        youTubePlayerFragment.initialize(Constants.DEVELOPER_KEY, new YouTubePlayer.OnInitializedListener() {
      //  mYouTubePlayerView.initialize(Constants.DEVELOPER_KEY, mOnInitializedListener);
       // mOnInitializedListener= new YouTubePlayer.OnInitializedListener() {

            @Override
            public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer player,
                                                boolean wasRestored) {
                if (!wasRestored) {
                    youTubePlayer = player;


                    //set the player style default
                    youTubePlayer.setPlayerStyle(YouTubePlayer.PlayerStyle.DEFAULT);

                    //cue the 1st video by default
                    youTubePlayer.loadVideo(videoList.toString(),0);

                    youTubePlayer.addFullscreenControlFlag(YouTubePlayer.FULLSCREEN_FLAG_ALWAYS_FULLSCREEN_IN_LANDSCAPE);
                }
            }

            @Override
            public void onInitializationFailure(YouTubePlayer.Provider arg0, YouTubeInitializationResult arg1) {

                //print or show error if initialization failed
                Log.e(TAG, "Youtube Player View initialization failed");
            }
        });

        //RecyclerView
        rv = view.findViewById(R.id.recyclerView);
        adapterHome2 = new AdapterHome2(getContext(),videoList);
        manager = new LinearLayoutManager(getContext());
        rv.setAdapter(adapterHome2);
        rv.setLayoutManager(manager);

        rv.addOnScrollListener(new RecyclerView.OnScrollListener() {
                                   @Override
                                   public
                                   void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) {
                                       super.onScrollStateChanged(recyclerView, newState);
                                       if (newState == AbsListView.OnScrollListener.SCROLL_STATE_TOUCH_SCROLL) {
                                           isScroll = true;
                                       }
                                   }

                                   @Override
                                   public
                                   void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
                                       super.onScrolled(recyclerView, dx, dy);
                                       currentItem = manager.getChildCount();
                                       totalItem = manager.getItemCount();
                                       scrollOutItem = manager.findFirstVisibleItemPosition();
                                       if (isScroll && (currentItem + scrollOutItem == totalItem)) {
                                           isScroll = false;
                                           loadJSON();
                                       }
                                   }
                               });

        if (videoList.size() == 0){
            loadJSON();
        }
        ItemClickListener();
        return view;
    }


    public void loadJSON() {
        String url = YoutubeAPI.BASE_URL + YoutubeAPI.sch + YoutubeAPI.KEY + YoutubeAPI.mx + YoutubeAPI.ord
                + YoutubeAPI.part + YoutubeAPI.query1 + YoutubeAPI.type;
        if (nextPageToken != ""){
            url = url + YoutubeAPI.NPT + nextPageToken;
        }
        if (nextPageToken == null){
            return;
        }
        Call<ModelHome> data = YoutubeAPI.getVideo().getHomeVideo(url);
        data.enqueue(new Callback<ModelHome>() {
            @Override
            public void onResponse(Call<ModelHome> call, Response<ModelHome> response) {
                if (response.errorBody() != null){
                    Log.w(TAG, "onResponse: " + response.errorBody() );

                    try {
                        Toast.makeText(getContext(), response.errorBody().string(), Toast.LENGTH_SHORT).show();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                } else {
                    ModelHome mh = response.body();
                    videoList.addAll(mh.getItems());
                    adapterHome2.notifyDataSetChanged();

                    if (mh.getNextPageToken() != null){
                        nextPageToken = mh.getNextPageToken();
                    }
                }
            }

            @Override
            public void onFailure(Call<ModelHome> call, Throwable t) {
                Log.e(TAG, "onFailure: ", t);
                Toast.makeText(getContext(), t.getMessage(), Toast.LENGTH_SHORT).show();
            }
        });
    }

    private
    void ItemClickListener() {
        adapterHome2 = new AdapterHome2(getContext(),videoList);
        rv.setAdapter(adapterHome2);
        rv.addOnItemTouchListener(new RecyclerViewOnClickListener3(getContext(),new RecyclerViewOnClickListener3.OnItemClickListener() {


            @Override
            public
            void onItemClick(View view3, int position) {
                if (youTubePlayerFragment != null && youTubePlayer != null) {
                    adapterHome2.setSelectedPosition(position);
                   youTubePlayer.loadVideo(String.valueOf(videoList.get(position)));

                }
            }
        }));
    }
public class RecyclerViewOnClickListener3 implements RecyclerView.OnItemTouchListener {

    private RecyclerViewOnClickListener3.OnItemClickListener mListener3;
    private GestureDetector mGestureDetector3;

    public interface OnItemClickListener {
        void onItemClick(View view3, int position3);
    }
    public RecyclerViewOnClickListener3(Context context, RecyclerViewOnClickListener3.OnItemClickListener listener) {
        mListener3 = listener;
        mGestureDetector3 = new GestureDetector(context, new GestureDetector.SimpleOnGestureListener() {
            @Override
            public boolean onSingleTapUp(MotionEvent e) {
                return true;
            }
        });

    }




    @Override
    public boolean onInterceptTouchEvent(RecyclerView view3, MotionEvent e) {
        View childView = view3.findChildViewUnder(e.getX(), e.getY());
        if (childView != null && mListener3 != null && mGestureDetector3.onTouchEvent(e) ){
            mListener3.onItemClick(childView, view3.getChildPosition(childView));
            return true;
        }
        return false;
    }

    @Override
    public void onTouchEvent(RecyclerView view3, MotionEvent motionEvent3) {
    }

    @Override
    public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {

    }

}