当前位置: 首页 > 知识库问答 >
问题:

如何在recyclerview for cardview android中使用int数组设置onclicklistener

赫连实
2023-03-14
private RecyclerView imagesRV;
private int[] images = {R.drawable.image01, R.drawable.image02, R.drawable.image03, R.drawable.image04, R.drawable.image05, R.drawable.image06, R.drawable.image07, R.drawable.image08};
private RecyclerViewAdapter imageAdapter;
//private ArrayList<String> imagePaths;


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


    imagesRV = (RecyclerView) findViewById(R.id.idRVImages);

    prepareRecyclerView();
}

private void prepareRecyclerView() {
    imageAdapter = new RecyclerViewAdapter(MainActivity.this, images);

    GridLayoutManager manager = new GridLayoutManager(MainActivity.this, 2);

    imagesRV.setLayoutManager(manager);
    imagesRV.setAdapter(imageAdapter);
}
private final Context context;
private final int[] imagePathArrayList;

public RecyclerViewAdapter(Context context, int[] imagePathArrayList) {
    this.context = context;
    this.imagePathArrayList = imagePathArrayList;
}

@NonNull
@Override
public RecyclerViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
    View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.cardview, parent, false);

    return  new RecyclerViewHolder(view);
}

@Override
public void onBindViewHolder(@NonNull RecyclerViewHolder holder, int position) {
    int imageId = imagePathArrayList[position];

        Picasso.get().load(imageId).placeholder(R.drawable.ic_launcher_background).into(holder.imageIV);

        holder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                    
            }
        });
        
}

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

public static class RecyclerViewHolder extends RecyclerView.ViewHolder {

    private final ImageView imageIV;

    public RecyclerViewHolder(@NonNull View itemView) {
        super(itemView);

        imageIV = itemView.findViewById(R.id.idIVImage);
    }
}

}

共有1个答案

百里光熙
2023-03-14

>

  • 创建接口:

     public interface MyOnClick {
         void onClick(int imageId);
     }
    

    向构造函数添加对MyOnClick的引用

    public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.RecyclerViewHolder> {
        ...
        private final MyOnClick myOnClick;
    
        public RecyclerViewAdapter(Context context, int[] imagePathArrayList, MyOnClick myOnClick) {
            this.context = context;
            this.imagePathArrayList = imagePathArrayList;
            this.myOnClick = myOnClick
        }
        ...
        @Override
        public void onBindViewHolder(@NonNull RecyclerViewHolder holder, int position) {
            final int imageId = imagePathArrayList[position];
            Picasso.get().load(imageId).placeholder(R.drawable.ic_launcher_background).into(holder.imageIV);
    
            holder.itemView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    myOnClick.onClick(imageId)
                }
            });
        }
    

    将MyOnClick传递给适配器

     public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.RecyclerViewHolder> {
         private RecyclerView imagesRV;
         private int[] images = {R.drawable.image01, R.drawable.image02, R.drawable.image03, R.drawable.image04, R.drawable.image05, R.drawable.image06, R.drawable.image07, R.drawable.image08};
         private RecyclerViewAdapter imageAdapter;
         //private ArrayList<String> imagePaths;
    
         @Override
         protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_home_page);
            imagesRV = (RecyclerView) findViewById(R.id.idRVImages);
            prepareRecyclerView();
         }
    
         private void prepareRecyclerView() {
             imageAdapter = new RecyclerViewAdapter(this, images, new MyOnClick() {
                 @Override
                 public void onClick(int imageId) {
                     // Your action
                 }
             });
    
             GridLayoutManager manager = new GridLayoutManager(MainActivity.this, 2);
    
             imagesRV.setLayoutManager(manager);
             imagesRV.setAdapter(imageAdapter);
         }
     }
    

  •  类似资料:
    • 问题内容: 我在设置值的Keras后端功能上遇到麻烦。我正在尝试将模型从PyTorch转换为Keras,并尝试设置Keras模型的权重,但是权重似乎没有被设置。注意:我实际上并没有使用np.ones进行设置,仅以示例为例。 我试过了… 加载现有模型 创建一个简单的模型 然后使用set_weights或set_value 要么… 之后,我将调用以下任一方法: 而且似乎没有设置任何权重。返回与以前相同

    • 问题内容: 我试图在Java中反转一个int数组。 此方法不会反转数组。 怎么办 问题答案: 要反转一个int数组,可以交换项直到达到中点为止,如下所示: 这样,你将每个元素交换两次,因此结果与初始列表相同。

    • 问题内容: 在实践中,我可以假定Java中的所有int数组都将以零填充开始吗?对于运行JVM的所有机器? 所有类型都适用吗?炭?布尔值?枚举? 正式记录在哪里? 我曾说过教科书将int数组设置为零,但他们也建议人们应该编写一个for循环将所有值设置为零,只是为了“更清晰”。 问题答案: Java语言规范是查找此类信息的正确位置: 数组组件 是未命名的变量,每当创建一个数组新对象时,该 组件 便会创

    • 问题内容: 一个int数组占用多少空间?或者一个int数组消耗多少空间(以字节为单位),看起来像这样: 内存分配语言是否特定? 谢谢你们 问题答案: 由于您添加了许多语言标签,因此我想为C#编写代码。在C#中,这取决于操作系统。 对于32位,每个都是4字节,另外4字节也用于引用对象,这使得4 * 4 + 4 = 20字节 对于64位,每个都是4字节,而8字节也用于引用该对象,这使得4 * 4 +

    • 提前谢了。我有一个状态数组,如下所示。 我需要添加一个项目到状态数组,我发现我们不需要做状态突变。如何使用PrevState设置状态。 如何调用set State以追加此状态数组。 像这样的东西?

    • 假设有一个名称按钮数组: 私有JButton按钮[]=新JButton[9] 如何将此数组中所有按钮的颜色设置为蓝色? 这是我的全部代码:这是一个使用按钮的井字游戏。