如何为 RecyclerView 适配器中动态生成的 ImageViews 设置 Onclick

How to set Onclick for ImageViews generated dynamically in Adapter for RecyclerView

ImageView 是为每个 RecyclerView 项目生成的,每个项目都有不同数量的 ImageView。我已经生成了 ImageView,但现在我必须为每个项目 中生成的每个图像设置 OnClick。我不知道该怎么做。任何帮助将不胜感激。

ImageView 在适配器中生成代码:

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

    holder.name.setText(names[position]);
    // BELOW CODE IS THERE TO DYNAMICALLY ADD IMAGES
    LinearLayout ll = new LinearLayout(c);
    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
    ll.setLayoutParams(params);
    for(int i=0;i<num[position];i++)
    {
        holder.image = new ImageView(c);
        holder.image.setLayoutParams(new ViewGroup.LayoutParams(200,
                200));
        holder.image.setImageResource(R.mipmap.ic_launcher);
        ll.addView(holder.image);
    }
    holder.horizontalScrollView.addView(ll);
}

以上代码在适配器内部,如果您需要,我将非常乐意为您提供所有代码。请告诉我如何处理生成的这些图像的点击事件。谢谢

您可以简单地在 holder.image 对象上执行此操作。这是一个基于您的代码的示例:

for(int i=0;i<num[position];i++)
    {
        holder.image = new ImageView(c);
        holder.image.setLayoutParams(new ViewGroup.LayoutParams(200,
                200));
        holder.image.setImageResource(R.mipmap.ic_launcher);
        //setting the onClickListener to image
        holder.image.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                //image clicked, do stuff
            }
        });
        ll.addView(holder.image);
    }

希望对您有所帮助。试试看,让我知道。

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

holder.name.setText(names[position]);
// BELOW CODE IS THERE TO DYNAMICALLY ADD IMAGES
LinearLayout ll = new LinearLayout(c);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
ll.setLayoutParams(params);
for(int i=0;i<num[position];i++)
{
    ImageView img = new ImageView(c);
    img.setLayoutParams(new ViewGroup.LayoutParams(200,
            200));
    img.setImageResource(R.mipmap.ic_launcher);
    img.setId(i);

  ll.addView(img);

    img.setOnClickListner(OnClickListener() {
        @Override
        public void onClick(View v) {

        }
    }));


}
holder.horizontalScrollView.addView(ll);
}