Android 如何将当前ID作为回收器视图中的位置传递?

Android 如何将当前ID作为回收器视图中的位置传递?,android,android-youtube-api,Android,Android Youtube Api,我正在使用Youtube API在recyclerView中播放视频 但是我每次都要硬编码videoID,我还创建了一个videoID列表,如何传递相应的videoID而不是硬编码 这是我的VideoActivity.java: 如何从列表中传递当前的VideoId,而不是像适配器类中的OnClick()中所示的那样硬编码单个值 您可以在onbindViewHolder()上处理click事件,如 公共类CustomAdapter扩展了RecyclerView.Adapter{ 语境; 列表my

我正在使用Youtube API在recyclerView中播放视频

但是我每次都要硬编码videoID,我还创建了一个videoID列表,如何传递相应的videoID而不是硬编码

这是我的VideoActivity.java:

如何从列表中传递当前的VideoId,而不是像适配器类中的OnClick()中所示的那样硬编码单个值


您可以在onbindViewHolder()上处理click事件,如

公共类CustomAdapter扩展了RecyclerView.Adapter{ 语境; 列表myModelList; 公共CustomAdapter(上下文,列表myModelList){ this.context=上下文; this.myModelList=myModelList; } @凌驾 public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent,int viewType){ LayoutFlater充气机=LayoutFlater.from(上下文); 视图v=充气机。充气(R.layout.custom_布局,父级,false); 返回新的视图持有者(v); } @凌驾 public void onBindViewHolder(@NonNull final ViewHolder,final int position){ 最终com.devapps.masjid.CustomModel myModel=myModelList.get(位置); holder.playButton.setOnClickListener(新的OnClickLister(){ @凌驾 公共void onClick(视图){ Intent Intent=YouTubeStandalonePlayer.createVideoIntent((活动)上下文, //在这里您可以获得api密钥 YoutubeConfig.getApiKey(),mymodel.getId(),100,true,true); 背景。开始触觉(意图); } }); 最终YouTubeThumbnailLoader.OnThumbnailLoadedListener OnThumbnailLoadedListener=新建YouTubeThumbnailLoader.OnThumbnailLoadedListener(){ @凌驾 OnTubThumbNailError(YouTubThumbNailView YouTubThumbNailView,YouTubThumbNailLoader.ErrorReason){ Toast.makeText(上下文,“发生了一些错误!”,Toast.LENGTH_SHORT.show(); Log.e(“Error:,String.valueOf(errorReason)); } @凌驾 HumbnailLoaded上的公共无效(YouTubeThumbnailView YouTubeThumbnailView,字符串s){ ProgressDialog=新建ProgressDialog(上下文); progressDialog.show(); youTubeThumbnailView.setVisibility(View.VISIBLE); holder.relativeLayoutOverYouTubeThumbnailView.setVisibility(View.VISIBLE); progressDialog.hide(); } }; holder.youTubeThumbnailView.initialize(YoutubeConfig.getApiKey(),新的youTubeThumbnailView.OnInitializedListener()){ @凌驾 初始化成功时的公共void(YouTubThumbNailView YouTubThumbNailView,YouTubThumbNailLoader YouTubThumbNailLoader){ setVideo(myModel.getId()); youTubeThumbnailLoader.setOnThumbnailLoadedListener(onThumbnailLoadedListener); } @凌驾 初始化失败时的公共void(YouTubeThumbnailView YouTubeThumbnailView,YouTubeInitializationResult YouTubeInitializationResult){ Toast.makeText(上下文,“ntialisationfailure上发生了一些错误!”,Toast.LENGTH\u SHORT.show(); Toast.makeText(上下文,“细节:+youTubeInitializationResult,Toast.LENGTH_LONG).show(); } }); } @凌驾 public int getItemCount(){ 返回myModelList.size(); } 类ViewHolder扩展了RecyclerView.ViewHolder实现了View.OnClickListener{ 受保护的RelativeLayout RelativeLayoutOveryoutSubethumbnailView; YouTubeThumbnailView YouTubeThumbnailView; 图像视图播放按钮; 公共视图持有者(@NonNull View itemView){ 超级(项目视图); playButton=(ImageView)itemView.findViewById(R.id.btnYoutube_播放器); RelativeLayoutOveryoutTubeThumbNailView=(RelativeLayout)itemView.findViewById(R.id.RelativeLayout\u覆盖youtube\u缩略图); youTubeThumbnailView=(youTubeThumbnailView)itemView.findviewbyd(R.id.youtube\u缩略图); } } }
在此基础上实现OnClickListener,但为什么我不能这样做,我是说我做错了什么?
String id=myModelList.get(getAdapterPosition()).getId().Tnx很棒的答案
RecyclerView recyclerView;
List<com.devapps.masjid.CustomModel> myModelList;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_video);
    recyclerView = (RecyclerView) findViewById(R.id.recyclerView);
    recyclerView.setLayoutManager(new LinearLayoutManager(this));
    myModelList = new ArrayList<>();
    myModelList.add(new com.devapps.masjid.CustomModel("hMy5za-m5Ew"));
    myModelList.add(new com.devapps.masjid.CustomModel("unU9vpLjHRk"));
    myModelList.add(new com.devapps.masjid.CustomModel("k9zTr2MAFRg"));
    recyclerView.setAdapter(new CustomAdapter(this,myModelList));
public class CustomAdapter extends RecyclerView.Adapter<CustomAdapter.ViewHolder> {
 Context context;
List<com.devapps.masjid.CustomModel> myModelList;
public CustomAdapter(Context context, List<com.devapps.masjid.CustomModel> myModelList) {
    this.context = context;
    this.myModelList = myModelList;
}
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
    LayoutInflater inflater = LayoutInflater.from(context);
    View v = inflater.inflate(R.layout.custom_layout, parent, false);
    return new ViewHolder(v);
}
@Override
public void onBindViewHolder(@NonNull final ViewHolder holder, final int position) {
    final com.devapps.masjid.CustomModel myModel = myModelList.get(position);
    final YouTubeThumbnailLoader.OnThumbnailLoadedListener onThumbnailLoadedListener = new YouTubeThumbnailLoader.OnThumbnailLoadedListener() {
        @Override
        public void onThumbnailError(YouTubeThumbnailView youTubeThumbnailView, YouTubeThumbnailLoader.ErrorReason errorReason) {
            Toast.makeText(context, "Some Error Occured !", Toast.LENGTH_SHORT).show();
            Log.e("Error : " , String.valueOf(errorReason));
        }
        @Override
        public void onThumbnailLoaded(YouTubeThumbnailView youTubeThumbnailView, String s) {
            ProgressDialog progressDialog = new ProgressDialog(context);
            progressDialog.show();
            youTubeThumbnailView.setVisibility(View.VISIBLE);
            holder.relativeLayoutOverYouTubeThumbnailView.setVisibility(View.VISIBLE);
            progressDialog.hide();
        }
    };
    holder.youTubeThumbnailView.initialize(YoutubeConfig.getApiKey(), new YouTubeThumbnailView.OnInitializedListener() {
        @Override
        public void onInitializationSuccess(YouTubeThumbnailView youTubeThumbnailView, YouTubeThumbnailLoader youTubeThumbnailLoader) {
            youTubeThumbnailLoader.setVideo(myModel.getId());
            youTubeThumbnailLoader.setOnThumbnailLoadedListener(onThumbnailLoadedListener);
        }
        @Override
        public void onInitializationFailure(YouTubeThumbnailView youTubeThumbnailView, YouTubeInitializationResult youTubeInitializationResult) {
            Toast.makeText(context, "Some Error Occured OnIntitialisationFailure!", Toast.LENGTH_SHORT).show();
            Toast.makeText(context, "Details : " + youTubeInitializationResult, Toast.LENGTH_LONG).show();
        }
    });
}
@Override
public int getItemCount() {
    return myModelList.size();
}
class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {

    protected RelativeLayout relativeLayoutOverYouTubeThumbnailView;
    YouTubeThumbnailView youTubeThumbnailView;
    protected ImageView playButton;
    public ViewHolder(@NonNull 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);
    }
    @Override
    public void onClick(View view) {
        Intent intent = YouTubeStandalonePlayer.createVideoIntent((Activity) context, YoutubeConfig.getApiKey(), "unU9vpLjHRk", 100,
                true,
                true);
        context.startActivity(intent);
    }
}
public class CustomModel {

String id;

public  CustomModel(){

}
public CustomModel(String id) {
    this.id = id;
}

public String getId() {
    return id;
}

public void setId(String id) {
    this.id = id;
}