Я создал рабочий YouTubePlayer RecyclerView, но - PullRequest
0 голосов
/ 02 ноября 2019

Мой RecyclerView работает нормально, но когда я хочу загрузить в него несколько разных видео, некоторые из них работают, а другие нет. В чем проблема и как я могу это исправить? Похоже, ошибка «I / chromium: [INFO: CONSOLE (0)]». На странице https://www.youtube.com/ отображается небезопасное содержимое из android-webview: default_video_poster / -5662080095540307343. ", источник: https://www.youtube.com/ (0)"

Я использую https://github.com/PierfrancescoSoffritti/android-youtube-player#quick-start вместо API YouTube.

MainActivity:

private RecyclerView recyclerView;
private RecyclerView.Adapter adapter;
private RecyclerView.LayoutManager layoutManager;
List<String> videoItems;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    videoItems = new ArrayList<>();

    videoItems.add("pNJLG6n4viY");
    videoItems.add("9rcrYFO1ogc");
    videoItems.add("K-4Tkp_2abs");

    recyclerView = findViewById(R.id.RecyclerView);

    adapter = new ItemAdapter(videoItems);
    layoutManager = new LinearLayoutManager(this);
    recyclerView.setLayoutManager(layoutManager);
    recyclerView.setAdapter(adapter);
    recyclerView.setHasFixedSize(true);

}

и мой адаптер:

открытый класс ItemAdapter расширяет RecyclerView.Adapter {

private List<String> videoList;

public ItemAdapter(List<String> videoList) {
    this.videoList = videoList;
}

public static class ItemViewHolder extends RecyclerView.ViewHolder {

    private String URL = "url";
    YouTubePlayerView youTubePlayerView;

    public ItemViewHolder(@NonNull View itemView) {
        super(itemView);
        youTubePlayerView = itemView.findViewById(R.id.youtube_player_view);
        youTubePlayerView.addYouTubePlayerListener(new AbstractYouTubePlayerListener() {
            @Override
            public void onReady(@NonNull YouTubePlayer youTubePlayer) {
                String videoId = URL;
                youTubePlayer.loadVideo(videoId, 0);
            }
        });
    }
}


@NonNull
@Override
public ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {

    View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.player_item, parent, false);
    ItemViewHolder itemViewHolder = new ItemViewHolder(view);
    return itemViewHolder;
}

@Override
public void onBindViewHolder(@NonNull ItemViewHolder holder, int position) {
    holder.URL.replaceAll(".+", videoList.get(position));

}

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

}

...