2016-04-07 23 views
6

Youtube videosunun sadece sonuncusunu görüntülemediği ve videoda kaydırma yaptığımda da kaybolacak bir sorunla karşılaşıyorum. İstediğim her video gösterilmeli ve her video farklı. Birazdan anlıyorsanızYoutube Videosu Görüntülemede GörülemiyorGörünüm

public class MyRecyclerViewAdapter extends Adapter<MyRecyclerViewAdapter 
.DataObjectHolder> { 
private static String LOG_TAG = "MyRecyclerViewAdapter"; 
private ArrayList<DataObject> mDataset; 
private static MyClickListener myClickListener; 
private static final int RECOVERY_DIALOG_REQUEST = 10; 
public static String key = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"; 
Context ctx; 
View view; 

public static class DataObjectHolder extends ViewHolder 
    implements View 
    .OnClickListener { 
    YouTubePlayerView youTubeView; 
public DataObjectHolder(View itemView) { 
    super(itemView); 
    youTubeView = (YouTubePlayerView) itemView.findViewById(R.id.youtube_view); 
    Log.i(LOG_TAG, "Adding Listener"); 
    itemView.setOnClickListener(this); 
} 

@Override 
public void onClick(View v) { 
    myClickListener.onItemClick(getAdapterPosition(), v); 
} 
} 

public void setOnItemClickListener(MyClickListener myClickListener) { 
this.myClickListener = myClickListener; 
} 

public MyRecyclerViewAdapter(Context context,ArrayList<DataObject> myDataset) { 
    mDataset = myDataset; 
    ctx=context; 
} 

@Override 
public DataObjectHolder onCreateViewHolder(ViewGroup parent, 
             int viewType) { 
    view = LayoutInflater.from(parent.getContext()) 
     .inflate(R.layout.playerview_demo, parent, false); 

DataObjectHolder dataObjectHolder = new DataObjectHolder(view); 
return dataObjectHolder; 
} 



@Override 
public void onBindViewHolder(DataObjectHolder holder, final int position) { 
holder.youTubeView.initialize(key, new YouTubePlayer.OnInitializedListener() { 
    @Override 
    public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer player, boolean b) { 
     player.cueVideo(mDataset.get(position).getmText1()); 
    } 

    @Override 
    public void onInitializationFailure(YouTubePlayer.Provider provider, YouTubeInitializationResult errorReason) { 
     if (errorReason.isUserRecoverableError()) { 
      errorReason.getErrorDialog((Activity) ctx, RECOVERY_DIALOG_REQUEST).show(); 
     } else { 
      String errorMessage = String.format("YouTube Error (%1$s)", 
        errorReason.toString()); 
      Toast.makeText(ctx, errorMessage, Toast.LENGTH_LONG).show(); 
     } 
    } 

    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     if (requestCode == RECOVERY_DIALOG_REQUEST) { 
      // Retry initialization if user performed a recovery action 
      getYouTubePlayerProvider().initialize(key, this); 
     } 
    } 

    protected YouTubePlayer.Provider getYouTubePlayerProvider() { 
     Toast.makeText(ctx, view.toString(), Toast.LENGTH_LONG).show(); 
     return (YouTubePlayerView) view.findViewById(R.id.youtube_view); 
    } 


}); 
} 

public void addItem(DataObject dataObj, int index) { 
mDataset.add(index, dataObj); 
notifyItemInserted(index); 
} 

public void deleteItem(int index) { 
mDataset.remove(index); 
notifyItemRemoved(index); 
} 

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

public interface MyClickListener { 
public void onItemClick(int position, View v); 
} 
} 
+0

yapılabiliyor gibi görünüyor, lütfen çözüme kavuştunuz mu? Aynı konuyla da ilgileniyorum, bana yardım edin. – user1629977

+0

Videonun oynatıldığı veya ayrı bir oyuncu başlattığı ([örnek] (https://youtu.be/83tXbg8qfOs?t=25s)) istenen davranış var mı? Düzen dosyanızı da gönderebilir misiniz lütfen? – PPartisan

+0

@PPartisan YouTube videolarının bir listesini görüntülemeye çalışıyorum. Böylece kullanıcı herhangi bir videoya tıklarsa. iletişim kutusunu veya diğer etkinlikleri açmaz. etiketlendikleri yerde liste görünümünde veya geri dönüştürücüde planlar. – user1629977

cevap

0

, sizin RecyclerView öğeleri düzgün/tam gösterilmiyor? Bazı ekran görüntüleri ve xml dosyanız yardımcı olabilir. Bu sorun gerçekten de ise

, kontrol senin playerview_demo.xml buna bu sorunu olduğunu wrap_content için gelmemişti Eğer layout_heightwrap_content

olarak ayarlanır buysa. Yoksa, bize bildirin.

+1

no xml'de sorun yok. Görüntünün nasıl göründüğünü paylaşıyorum. http://postimg.org/image/iwvkzeuab/ – Ravi

+0

@Ravi lütfen çözüme kavuştunuz mu? Aynı konuyla da ilgileniyorum, bana yardım edin. – user1629977

+0

Üzgünüm @ user1629977, Webview kullanarak ve Youtube videoları oynatmak yerine bu kodu kullanmıyorum. – Ravi

0

YoutubePlayer görünümü, geri dönüştürücü görünümüne eklenemeyecek kadar büyük değil. Küçük resimleri görüntülemek için YouTubeThumbnailView kullanın. Kullanıcı bunlardan birini tıkladığında, YouTubePlayerFragment veya YouTubeplayerView görünümü ile bir aktivite başlatabilirsiniz. Senin durumunda

bu işaret için İrfan Raza bu

public class MyRecyclerViewAdapter extends Adapter<MyRecyclerViewAdapter 
.DataObjectHolder> { 
private static String LOG_TAG = "MyRecyclerViewAdapter"; 
private ArrayList<DataObject> mDataset; 
private static MyClickListener myClickListener; 
private static final int RECOVERY_DIALOG_REQUEST = 10; 
public static String key = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"; 
Context ctx; 
View view; 

public static class DataObjectHolder extends ViewHolder 
    implements View 
    .OnClickListener { 
    YouTubeThumbnailView youTubeThumbnailView ; 
public DataObjectHolder(View itemView) { 
    super(itemView); 
    youTubeThumbnailView = (YouTubeThumbnailView) itemView.findViewById(R.id.yourId); 
    itemView.setOnClickListener(this); 
} 

@Override 
public void onClick(View v) { 
    myClickListener.onItemClick(getAdapterPosition(), v); 
} 
} 

public void setOnItemClickListener(MyClickListener myClickListener) { 
this.myClickListener = myClickListener; 
} 

public MyRecyclerViewAdapter(Context context,ArrayList<DataObject> myDataset) { 
    mDataset = myDataset; 
    ctx=context; 
} 

@Override 
public DataObjectHolder onCreateViewHolder(ViewGroup parent, 
             int viewType) { 
    view = LayoutInflater.from(parent.getContext()) 
     .inflate(R.layout.playerview_demo, parent, false); 

DataObjectHolder dataObjectHolder = new DataObjectHolder(view); 
return dataObjectHolder; 
} 



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

holder.youTubeThumbnailView.initialize(key, new YouTubePlayer.OnInitializedListener() { 
    @Override 
    public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer player, boolean b) { 
    } 

    @Override 
    public void onInitializationFailure(YouTubePlayer.Provider provider, YouTubeInitializationResult errorReason) { 
     if (errorReason.isUserRecoverableError()) { 
      errorReason.getErrorDialog((Activity) ctx, RECOVERY_DIALOG_REQUEST).show(); 
     } else { 
      String errorMessage = String.format("YouTube Error (%1$s)", 
        errorReason.toString()); 
      Toast.makeText(ctx, errorMessage, Toast.LENGTH_LONG).show(); 
     } 
    } 

    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     if (requestCode == RECOVERY_DIALOG_REQUEST) { 
      // Retry initialization if user performed a recovery action 
      getYouTubePlayerProvider().initialize(key, this); 
     } 
    } 

    protected YouTubePlayer.Provider getYouTubePlayerProvider() { 
     Toast.makeText(ctx, view.toString(), Toast.LENGTH_LONG).show(); 
     return (YouTubePlayerView) view.findViewById(R.id.youtube_view); 
    } 


}); 
} 

public void addItem(DataObject dataObj, int index) { 
mDataset.add(index, dataObj); 
notifyItemInserted(index); 
} 

public void deleteItem(int index) { 
mDataset.remove(index); 
notifyItemRemoved(index); 
} 

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

public interface MyClickListener { 
public void onItemClick(int position, View v); 
} 
} 

Düzenleme teşekkür gibi olurdu. this cevabına bakın,

+0

Çalışma zamanında yapılabilir. Bu cevaba bakın https://stackoverflow.com/questions/33558818/youtubeplayerfragment-inside-reyclerview –

İlgili konular