2016-03-16 9 views
2

У меня возникла проблема с отображением и воспроизведением списка видеороликов youtube. Позвольте мне объяснить, у меня есть фрагмент и помещен в список. В этом списке есть отдельный дочерний вид для каждого элемента. Я был помещен <com.google.android.youtube.player.YouTubeThumbnailView> тегом, а также попытался разместить фрагмент. В обоих случаях я получаю исключение Binary Inflated. Скажите, пожалуйста, какое-либо решение для моей проблемы.Список воспроизведения видео youtube в listview

Process: com.example.sampleexamplefor_recyclerview, PID: 6510 
    android.view.InflateException: Binary XML file line #28: Error inflating class com.google.android.youtube.player.YouTubePlayerView 
      at android.view.LayoutInflater.createView(LayoutInflater.java:633) 
      at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:743) 
      at android.view.LayoutInflater.rInflate(LayoutInflater.java:806) 
      at android.view.LayoutInflater.rInflate(LayoutInflater.java:809) 
      at android.view.LayoutInflater.inflate(LayoutInflater.java:504) 
      at android.view.LayoutInflater.inflate(LayoutInflater.java:414) 
      at com.example.sampleexamplefor_recyclerview.RecyclerAdapter.onCreateViewHolder(RecyclerAdapter.java:40) 
      at com.example.sampleexamplefor_recyclerview.RecyclerAdapter.onCreateViewHolder(RecyclerAdapter.java:24) 
      at android.support.v7.widget.RecyclerView$Adapter.createViewHolder(RecyclerView.java:5288) 
      at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:4551) 
      at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:4461) 
      at android.support.v7.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:1962) 
      at android.support.v7.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1371) 
      at android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1334) 
      at android.support.v7.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:563) 
      at android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:2847) 
      at android.support.v7.widget.RecyclerView.onLayout(RecyclerView.java:3145) 
      at android.view.View.layout(View.java:15684) 
      at android.view.ViewGroup.layout(ViewGroup.java:4981) 
      at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1703) 
      at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1557) 
      at android.widget.LinearLayout.onLayout(LinearLayout.java:1466) 
      at android.view.View.layout(View.java:15684) 
      at android.view.ViewGroup.layout(ViewGroup.java:4981) 
      at android.widget.FrameLayout.layoutChildren(FrameLayout.java:573) 
      at android.widget.FrameLayout.onLayout(FrameLayout.java:508) 
      at android.view.View.layout(View.java:15684) 
      at android.view.ViewGroup.layout(ViewGroup.java:4981) 
      at com.android.internal.widget.ActionBarOverlayLayout.onLayout(ActionBarOverlayLayout.java:494) 
      at android.view.View.layout(View.java:15684) 
      at android.view.ViewGroup.layout(ViewGroup.java:4981) 
      at android.widget.FrameLayout.layoutChildren(FrameLayout.java:573) 
      at android.widget.FrameLayout.onLayout(FrameLayout.java:508) 
      at android.view.View.layout(View.java:15684) 
      at android.view.ViewGroup.layout(ViewGroup.java:4981) 
      at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2186) 
      at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1920) 
      at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1106) 
      at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6018) 
      at android.view.Choreographer$CallbackRecord.run(Choreographer.java:792) 
      at android.view.Choreographer.doCallbacks(Choreographer.java:596) 
      at android.view.Choreographer.doFrame(Choreographer.java:557) 
      at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:778) 
      at android.os.Handler.handleCallback(Handler.java:739) 
      at android.os.Handler.dispatchMessage(Handler.java:95) 
      at android.os.Looper.loop(Looper.java:155) 
      at android.app.ActivityThread.main(ActivityThread.java:5696) 
      at java.lang.reflect.Method.invoke(Native Method) 
      at java.lang.reflect.Method.invoke(Method.java:372) 
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1028) 
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:823) 
    Caused by: java.lang.reflect.InvocationTargetException 
      at java.lang.reflect.Constructor.newInstance(Native Method) 
      at java.lang.reflect.Constructor.newInstance(Constructor.java:288) 
      at android.view.LayoutInflater.createView(LayoutInflater.java:607) 
            at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:743) 
            at android.view.LayoutInflater.rInflate(LayoutInflater.java:806) 
            at android.view.LayoutInflater.rInflate(LayoutInflater.java:809) 
            at android.view.LayoutInflater.inflate(LayoutInflater.java:504) 
            at android.view.LayoutInflater.inflate(LayoutInflater.java:414) 
            at com.example.sampleexamplefor_recyclerview.RecyclerAdapter.onCreateViewHolder(RecyclerAdapter.java:40) 
            at com.example.sampleexamplefor_recyclerview.RecyclerAdapter.onCreateViewHolder(RecyclerAdapter.java:24) 
            at android.support.v7.widget.RecyclerView$Adapter.createViewHolder(RecyclerView.java:5288) 
            at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:4551) 
            at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:4461) 
            at android.support.v7.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:1962) 
            at android.support.v7.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1371) 
            at android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1334) 
            at android.support.v7.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:563) 
            at android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:2847) 
            at android.support.v7.widget.RecyclerView.onLayout(RecyclerView.java:3145) 
            at android.view.View.layout(View.java:15684) 
            at android.view.ViewGroup.layout(ViewGroup.java:4981) 
            at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1703) 
            at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1557) 
            at android.widget.LinearLayout.onLayout(LinearLayout.java:1466) 
            at android.view.View.layout(View.java:15684) 
            at android.view.ViewGroup.layout(ViewGroup.java:4981) 
            at android.widget.FrameLayout.layoutChildren(FrameLayout.java:573) 
            at android.widget.FrameLayout.onLayout(FrameLayout.java:508) 
            at android.view.View.layout(View.java:15684) 
            at android.view.ViewGroup.layout(ViewGroup.java:4981) 
            at com.android.internal.widget.ActionBarOverlayLayout.onLayout(ActionBarOverlayLayout.java:494) 
            at android.view.View.layout(View.java:15684) 
            at android.view.ViewGroup.layout(ViewGroup.java:4981) 
            at android.widget.FrameLayout.layoutChildren(FrameLayout.java:573) 
            at android.widget.FrameLayout.onLayout(FrameLayout.java:508) 
            at android.view.View.layout(View.java:15684) 
            at android.view.ViewGroup.layout(ViewGroup.java:4981) 
            at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2186) 
            at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1920) 
            at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1106) 
            at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6018) 
            at android.view.Choreographer$CallbackRecord.run(Choreographer.java:792) 
            at android.view.Choreographer.doCallbacks(Choreographer.java:596) 
            at android.view.Choreographer.doFrame(Choreographer.java:557) 
            at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:778) 
            at android.os.Handler.handleCallback(Handler.java:739) 
            at android.os.Handler.dispatchMessage(Handler.java:95) 
            at android.os.Looper.loop(Looper.java:155) 
            at android.app.ActivityThread.main(ActivityThread.java:5696) 
            at java.lang.reflect.Method.invoke(Native Method) 
            at java.lang.reflect.Method.invoke(Method.java:372) 
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1028) 
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:823) 
    Caused by: 

адаптер:

public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerAdapter.VideoInfoHolder> implements YouTubePlayer.OnInitializedListener{ 

    //these ids are the unique id for each video 
    String[] VideoID = {"P3mAtvs5Elc", "nCgQDjiotG0", "P3mAtvs5Elc"}; 
    Context ctx; 
    YouTubeThumbnailLoader youTubeThumbnailLoader; 
    private MyPlayerStateChangeListener playerStateChangeListener; 
    private MyPlaybackEventListener playbackEventListener; 
    private YouTubePlayer player; 

    public RecyclerAdapter(Context context) { 
     this.ctx = context; 
    } 

    @Override 
    public VideoInfoHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
     View itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_item, parent, false); 
     return new VideoInfoHolder(itemView); 
    } 

    @Override 
    public void onBindViewHolder(final VideoInfoHolder holder, final int position) { 

     holder. youTubeView.initialize("AIzaSyCS8nKb2V9RROPP3ehy4mhQbwhVdfe7V8o", this); 
     playerStateChangeListener = new MyPlayerStateChangeListener(); 
     playbackEventListener = new MyPlaybackEventListener(); 

     holder.relativeLayoutOverYouTubeThumbnailView.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       holder.relativeLayoutOverYouTubeThumbnailView.setVisibility(View.GONE); 
       player.play(); 

      } 
     }); 

     final YouTubeThumbnailLoader.OnThumbnailLoadedListener onThumbnailLoadedListener = new YouTubeThumbnailLoader.OnThumbnailLoadedListener(){ 
      @Override 
      public void onThumbnailError(YouTubeThumbnailView youTubeThumbnailView, YouTubeThumbnailLoader.ErrorReason errorReason) { 

      } 

      @Override 
      public void onThumbnailLoaded(YouTubeThumbnailView youTubeThumbnailView, String s) { 
       youTubeThumbnailView.setVisibility(View.VISIBLE); 
       holder.relativeLayoutOverYouTubeThumbnailView.setVisibility(View.VISIBLE); 
      } 
     }; 

     holder.relativeLayoutOverYouTubeThumbnailView.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       holder.relativeLayoutOverYouTubeThumbnailView.setVisibility(View.GONE); 

      } 
     }); 

     /*holder.youTubeThumbnailView.initialize("AIzaSyCS8nKb2V9RROPP3ehy4mhQbwhVdfe7V8o", new YouTubeThumbnailView.OnInitializedListener() { 
      @Override 
      public void onInitializationSuccess(YouTubeThumbnailView youTubeThumbnailView, YouTubeThumbnailLoader youTubeThumbnailLoader) { 
       youTubeThumbnailLoader = youTubeThumbnailLoader; 
       youTubeThumbnailLoader.setVideo(VideoID[position]); 
       youTubeThumbnailLoader.setOnThumbnailLoadedListener(onThumbnailLoadedListener); 
      } 

      @Override 
      public void onInitializationFailure(YouTubeThumbnailView youTubeThumbnailView, YouTubeInitializationResult youTubeInitializationResult) { 
       //write something for failure 
      } 
     });*/ 
    } 

    @Override 
    public int getItemCount() { 
     return VideoID.length; 
    } 

    @Override 
    public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer player, boolean b) { 
     this.player = player; 
     player.setPlayerStateChangeListener(playerStateChangeListener); 
     player.setPlaybackEventListener(playbackEventListener); 

     if (!b) { 
      player.cueVideo("fhWaJi1Hsfo"); // Plays https://www.youtube.com/watch?v=fhWaJi1Hsfo 
     } 
    } 

    @Override 
    public void onInitializationFailure(YouTubePlayer.Provider provider, YouTubeInitializationResult youTubeInitializationResult) { 

    } 

    public class VideoInfoHolder extends RecyclerView.ViewHolder implements View.OnClickListener { 

     protected RelativeLayout relativeLayoutOverYouTubeThumbnailView; 
     YouTubeThumbnailView youTubeThumbnailView; 
     protected ImageView playButton; 
     private YouTubePlayerView youTubeView; 

     public VideoInfoHolder(View itemView) { 
      super(itemView); 
      playButton=(ImageView)itemView.findViewById(R.id.btnYoutube_player); 
      playButton.setOnClickListener(this); 
      relativeLayoutOverYouTubeThumbnailView = (RelativeLayout) itemView.findViewById(R.id.relativeLayout_over_youtube_thumbnail); 
      youTubeThumbnailView = (YouTubeThumbnailView) itemView.findViewById(R.id.youtube_thumbnail); 
//   youTubeView = (YouTubePlayerView)itemView. findViewById(R.id.youtube_view); 

     } 

     @Override 
     public void onClick(View v) { 

      Intent intent = YouTubeStandalonePlayer.createVideoIntent((Activity) ctx, "AIzaSyCS8nKb2V9RROPP3ehy4mhQbwhVdfe7V8o", VideoID[getLayoutPosition()]); 
      ctx.startActivity(intent); 

     } 
    } 


    private final class MyPlaybackEventListener implements YouTubePlayer.PlaybackEventListener { 

     @Override 
     public void onPlaying() { 
      // Called when playback starts, either due to user action or call to play(). 

     } 

     @Override 
     public void onPaused() { 
      // Called when playback is paused, either due to user action or call to pause(). 
     } 

     @Override 
     public void onStopped() { 
      // Called when playback stops for a reason other than being paused. 
     } 

     @Override 
     public void onBuffering(boolean b) { 
      // Called when buffering starts or ends. 
     } 

     @Override 
     public void onSeekTo(int i) { 
      // Called when a jump in playback position occurs, either 
      // due to user scrubbing or call to seekRelativeMillis() or seekToMillis() 
     } 
    } 

    private final class MyPlayerStateChangeListener implements YouTubePlayer.PlayerStateChangeListener { 

     @Override 
     public void onLoading() { 
      // Called when the player is loading a video 
      // At this point, it's not ready to accept commands affecting playback such as play() or pause() 
     } 

     @Override 
     public void onLoaded(String s) { 
      // Called when a video is done loading. 
      // Playback methods such as play(), pause() or seekToMillis(int) may be called after this callback. 
     } 

     @Override 
     public void onAdStarted() { 
      // Called when playback of an advertisement starts. 
     } 

     @Override 
     public void onVideoStarted() { 
      // Called when playback of the video starts. 
     } 

     @Override 
     public void onVideoEnded() { 
      // Called when the video reaches its end. 
     } 

     @Override 
     public void onError(YouTubePlayer.ErrorReason errorReason) { 
      // Called when an error occurs. 
     } 
    } 
} 

XML:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/parent_relativeLayout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 
    <android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:card_view="http://schemas.android.com/apk/res-auto" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:clickable="true" 

     card_view:cardCornerRadius="5dp" 
     card_view:cardElevation="0dp" 
     android:layout_marginTop="10dp" 
     card_view:cardBackgroundColor="@android:color/black" 

     card_view:cardPreventCornerOverlap="false" 
     card_view:cardUseCompatPadding="true"> 


     <com.google.android.youtube.player.YouTubeThumbnailView 
     android:id="@+id/youtube_thumbnail" 
     android:layout_width="match_parent" 
     android:layout_height="180dp" 
     android:scaleType="centerCrop" 
     android:visibility="gone"/> 

     <com.google.android.youtube.player.YouTubePlayerView 
      android:id="@+id/youtube_view" 
      android:layout_width="match_parent" 
      android:layout_height="180dp"/> 
     <RelativeLayout android:id="@+id/relativeLayout_over_youtube_thumbnail" 
      android:layout_width="match_parent" 
      android:layout_height="250dp" 
      android:background="#707070" 
      android:visibility="visible"> 

      <ImageView android:id="@+id/btnYoutube_player" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:scaleType="center" 

       android:src="@mipmap/ic_launcher"/> 

     </RelativeLayout> 
    </android.support.v7.widget.CardView> 

</RelativeLayout> 
+1

Можете ли вы включить остальную трассировку стека. Об этом говорится в конце. – tasomaniac

+0

Похоже, вы используете 'RecyclerView', а не' ListView'. Не могли бы вы включить полную статистику стека в свой пост, а также код для вашего класса «Адаптер» и файла макета для строки, надутой в 'onCreateViewHolder()? Пожалуйста? – PPartisan

ответ

2

из documentation,

Обратите внимание, что в то время как видео играет, это View имеет минимальный размер 200x110 дп , Если вы уменьшите представление, видео автоматически прекратит воспроизведение. Кроме того, не разрешается накладывать представление этого фрагмента на другие представления во время воспроизведения видео. Код

1

XML: list_item

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/parent_relativeLayout" 
    android:layout_width="match_parent" 
    android:layout_height="270dp"> 

    <android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:card_view="http://schemas.android.com/apk/res-auto" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="10dp" 
     android:clickable="true" 
     card_view:cardBackgroundColor="@android:color/black" 
     card_view:cardCornerRadius="5dp" 
     card_view:cardElevation="0dp" 
     card_view:cardPreventCornerOverlap="false" 
     card_view:cardUseCompatPadding="true"> 


     <com.google.android.youtube.player.YouTubeThumbnailView 
      android:id="@+id/youtube_thumbnail" 
      android:layout_width="match_parent" 
      android:layout_height="250dp" 
      android:scaleType="centerCrop" 
      android:visibility="visible" /> 

     <RelativeLayout 
      android:id="@+id/relativeLayout_over_youtube_thumbnail" 
      android:layout_width="match_parent" 
      android:layout_height="250dp" 
      android:visibility="visible"> 

      <ImageView 
       android:id="@+id/btnYoutube_player" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:scaleType="center" 
       android:src="@android:drawable/btn_plus" /> 
      <TextView 
       android:id="@+id/videosTitle_tv" 
       android:layout_width="match_parent" 
       android:layout_height="40dp" 
       android:text="Vidoes title here" 
       android:gravity="center" 
       android:layout_alignParentBottom="true"/> 
     </RelativeLayout> 
    </android.support.v7.widget.CardView> 


</RelativeLayout> 

RecyclerAdapter

package com.mobileappdev.videosapp.adapter; 

import android.app.Activity; 
import android.content.Context; 
import android.content.Intent; 
import android.content.res.Resources; 
import android.support.v7.widget.RecyclerView; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ImageView; 
import android.widget.RelativeLayout; 
import android.widget.TextView; 

import com.google.android.youtube.player.YouTubeInitializationResult; 
import com.google.android.youtube.player.YouTubeStandalonePlayer; 
import com.google.android.youtube.player.YouTubeThumbnailLoader; 
import com.google.android.youtube.player.YouTubeThumbnailView; 
import com.mobileappdev.videosapp.R; 

/** 
* Created by ofaroque on 8/13/15. 
*/ 
public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerAdapter.VideoInfoHolder> { 

    //these ids are the unique id for each video 
    String[] VideoID = {"P3mAtvs5Elc", "nCgQDjiotG0", "P3mAtvs5Elc"}; 
    String[] Ttitles = {"Video # 1", "Video # 2", "Video # 3"}; 
    Context ctx; 
    private static String KEY = "Add your authentication key for google"; 

    public RecyclerAdapter(Context context) { 
     this.ctx = context; 
    } 

    @Override 
    public VideoInfoHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
     View itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_item, parent, false); 
     return new VideoInfoHolder(itemView); 
    } 

    @Override 
    public void onBindViewHolder(final VideoInfoHolder holder, final int position) { 


     final YouTubeThumbnailLoader.OnThumbnailLoadedListener onThumbnailLoadedListener = new YouTubeThumbnailLoader.OnThumbnailLoadedListener() { 
      @Override 
      public void onThumbnailError(YouTubeThumbnailView youTubeThumbnailView, YouTubeThumbnailLoader.ErrorReason errorReason) { 

      } 

      @Override 
      public void onThumbnailLoaded(YouTubeThumbnailView youTubeThumbnailView, String s) { 
       youTubeThumbnailView.setVisibility(View.VISIBLE); 
       holder.relativeLayoutOverYouTubeThumbnailView.setVisibility(View.VISIBLE); 
      } 
     }; 

     holder.youTubeThumbnailView.initialize(KEY, new YouTubeThumbnailView.OnInitializedListener() { 
      @Override 
      public void onInitializationSuccess(YouTubeThumbnailView youTubeThumbnailView, YouTubeThumbnailLoader youTubeThumbnailLoader) { 

       youTubeThumbnailLoader.setVideo(VideoID[position]); 

       youTubeThumbnailLoader.setOnThumbnailLoadedListener(onThumbnailLoadedListener); 
       holder.videosTitleTextView.setText(Ttitles[position]); 
      } 

      @Override 
      public void onInitializationFailure(YouTubeThumbnailView youTubeThumbnailView, YouTubeInitializationResult youTubeInitializationResult) { 
       //write something for failure 
      } 
     }); 
    } 

    @Override 
    public int getItemCount() { 
     return VideoID.length; 
    } 

    public class VideoInfoHolder extends RecyclerView.ViewHolder implements View.OnClickListener { 

     protected RelativeLayout relativeLayoutOverYouTubeThumbnailView; 
     YouTubeThumbnailView youTubeThumbnailView; 
     protected ImageView playButton; 
     protected TextView videosTitleTextView; 

     public VideoInfoHolder(View itemView) { 
      super(itemView); 
      playButton = (ImageView) itemView.findViewById(R.id.btnYoutube_player); 
      videosTitleTextView = (TextView) itemView.findViewById(R.id.videosTitle_tv); 
      playButton.setOnClickListener(this); 
      relativeLayoutOverYouTubeThumbnailView = (RelativeLayout) itemView.findViewById(R.id.relativeLayout_over_youtube_thumbnail); 
      youTubeThumbnailView = (YouTubeThumbnailView) itemView.findViewById(R.id.youtube_thumbnail); 
     } 

     @Override 
     public void onClick(View v) { 

      Intent intent = YouTubeStandalonePlayer.createVideoIntent((Activity) ctx, KEY, VideoID[getLayoutPosition()]); 
      ctx.startActivity(intent); 
     } 
    } 
} 

MainActivity

package com.mobileappdev.videosapp; 

    import android.support.v7.app.AppCompatActivity; 
    import android.os.Bundle; 
    import android.support.v7.widget.LinearLayoutManager; 
    import android.support.v7.widget.RecyclerView; 
    import android.util.Log; 

    import com.google.firebase.database.DataSnapshot; 
    import com.google.firebase.database.DatabaseError; 
    import com.google.firebase.database.DatabaseReference; 
    import com.google.firebase.database.FirebaseDatabase; 
    import com.google.firebase.database.ValueEventListener; 
    import com.mobileappdev.videosapp.adapter.RecyclerAdapter; 
    import com.mobileappdev.videosapp.models.Videos; 

    public class MainActivity extends AppCompatActivity { 

     private static String TAG = MainActivity.class.getSimpleName(); 


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


      RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recyclerView); 
      recyclerView.setHasFixedSize(true); 
      //to use RecycleView, you need a layout manager. default is LinearLayoutManager 
      LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this); 
      linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL); 
      recyclerView.setLayoutManager(linearLayoutManager); 
      RecyclerAdapter adapter = new RecyclerAdapter(this); 
      recyclerView.setAdapter(adapter); 

     } 
    } 
+0

но выступление мудрый мелкий проблема есть.все все заметный приятный код. –

Смежные вопросы