Rav*_*avi 7 youtube android youtube-data-api android-recyclerview
我面临的问题是youtube视频没有显示,只有最后一个正在播放,当我滚动视频时也会消失.我想要的是每个视频都应该显示,每个视频都不同.
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);
}
}
Run Code Online (Sandbox Code Playgroud)
如果我理解正确的话,你的项目RecyclerView没有正确/完整地显示?一些屏幕截图和您的 xml 文件会很有帮助。
如果这确实是问题,请检查您的设置playerview_demo.xml是否为layout_heightwrap_content
如果没有设置,wrap_content这就是问题所在。如果没有,请告诉我们。
| 归档时间: |
|
| 查看次数: |
2205 次 |
| 最近记录: |