,可以通过以下步骤实现:
以下是一个示例代码:
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
private List<ImageView> imageViewList;
private int selectedPosition = -1;
public MyAdapter(List<ImageView> imageViewList) {
this.imageViewList = imageViewList;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_image, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
ImageView imageView = imageViewList.get(position);
holder.bind(imageView, position);
}
@Override
public int getItemCount() {
return imageViewList.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
private ImageView imageView;
public ViewHolder(@NonNull View itemView) {
super(itemView);
imageView = itemView.findViewById(R.id.imageView);
}
public void bind(ImageView imageView, final int position) {
imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
selectedPosition = position;
notifyDataSetChanged();
}
});
if (selectedPosition == position) {
// 设置选中状态
imageView.setSelected(true);
} else {
// 取消选中状态
imageView.setSelected(false);
}
}
}
}
在上述示例代码中,我们通过selectedPosition变量记录选中的位置,然后在bind方法中根据该变量来设置ImageView的选中状态。当点击某个ImageView时,更新selectedPosition的值,并调用notifyDataSetChanged方法刷新RecyclerView,从而实现一次只选择一个ImageView的效果。
请注意,上述示例代码仅为演示目的,实际使用时需要根据具体需求进行适当修改。
领取专属 10元无门槛券
手把手带您无忧上云