gpt4 book ai didi

java - RecyclerView - 根据标志实现黑白项目图像

转载 作者:行者123 更新时间:2023-12-02 09:41:39 27 4
gpt4 key购买 nike

我尝试创建一个显示图像的RecyclerView。我想实现一个功能,如果某些变量状态为“关闭”,则将图像项目设为黑白,否则将其保留为 RGB。

我有一个名为Player的对象。 Player 包含:int idint imgAdrs字符串状态

我向 RecyclerView 传递一个包含所有玩家图像地址 allPlayers 的数组,以及一个包含所有玩家状态 mStatus 的数组。

由于我试图避免每个项目都有两张图片(一张 RGB 和第二张 BW) - 我尝试在 ViewHolder 构造函数初始化期间对 ImageView 项目应用 BW 过滤器。

但是status变量没有传递给ViewHolder(statusnull),并且可见仅适用于 RecyclerViewAdapter

有人可以帮我解决这个问题吗?

public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.ViewHolder> {

private ArrayList<Integer> allPlayers = new ArrayList<>();
private ArrayList<String> mStatus = new ArrayList<>();
private Context mContext;

public RecyclerViewAdapter(Context mContext, ArrayList<Integer> mImages, ArrayList<String> mStatus) {
this.allPlayers = mImages;
this.mStatus = mStatus;
this.mContext = mContext;
}

@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.lay_players_item_list, parent, false);
ViewHolder holder = new ViewHolder(view);
return holder;
}

@Override
public void onBindViewHolder(@NonNull ViewHolder holder, final int position) {
Glide.with(mContext)
.asBitmap()
.load(allPlayers.get(position))
.into(holder.image);

holder.status = mStatus.get(position);
holder.parentLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(mContext, "(:", Toast.LENGTH_SHORT).show();
}
});
}

@Override
public int getItemCount() { //How many items are in the list
return allPlayers.size();
}

public class ViewHolder extends RecyclerView.ViewHolder {
ImageView image;
RelativeLayout parentLayout;
String status;

public ViewHolder(View itemView) {
super(itemView);
image = itemView.findViewById(R.id.image);
parentLayout = itemView.findViewById(R.id.parent_layout);

if (status.equals("CLOSE")) {
ColorMatrix matrix = new ColorMatrix();
matrix.setSaturation(0);

ColorMatrixColorFilter filter = new ColorMatrixColorFilter(matrix);
image.setColorFilter(filter);

}
}
}

最佳答案

在onBindViewHolder中添加此代码

        if (mStatus.get(position).equals("CLOSE")) {
ColorMatrix matrix = new ColorMatrix();
matrix.setSaturation(0);

ColorMatrixColorFilter filter = new ColorMatrixColorFilter(matrix);
holder.image.setColorFilter(filter);

}

您只能在 onBindViewHolder 方法内编辑任何 View 。 Viewholder 就像一个仅保留您的 View 的支架。

请告诉我这是否能解决您的问题?

关于java - RecyclerView - 根据标志实现黑白项目图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57021764/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com