- 我从 SERVER 获取数据以填充 RECYCLER View
- 我在每个 recyclerview 行中都有一个 imageview
当我点击那个 imageview 时,我想将我的 drawable 加载到 imageview 中
holder.imageView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Drawable placeholder = holder.imageView.getContext().getResources().getDrawable(R.drawable.app); holder.imageView.setImageDrawable(placeholder); } });
上面是我尝试过的,但它说“holder”需要被声明为最终的,但实际上,我什至没有以我可以写成“final holder”之类的方式提到它。
我的适配器代码:
public class ProductsAdapter extends
RecyclerView.Adapter<ProductsAdapter.ProductViewHolder> {
private Context mCtx;
private List<Product> productList;
public ProductsAdapter(Context mCtx, List<Product> productList) {
this.mCtx = mCtx;
this.productList = productList;
}
@Override
public ProductViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
LayoutInflater inflater = LayoutInflater.from(mCtx);
View view = inflater.inflate(R.layout.product_list, null);
return new ProductViewHolder(view);
}
@Override
public void onBindViewHolder(ProductViewHolder holder, int position) {
final Product product = productList.get(position);
//loading the image
Glide.with(mCtx)
.load(product.getImage())
.into(holder.imageView);
holder.textViewTitle.setText(product.getTitle());
holder.textViewShortDesc.setText(product.getShortdesc());
holder.textViewRating.setText(String.valueOf(product.getRating()));
holder.textViewPrice.setText(String.valueOf(product.getPrice()));
holder.imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Drawable placeholder = holder.imageView.getContext().getResources().getDrawable(R.drawable.app);
holder.imageView.setImageDrawable(placeholder);
}
});
}
@Override
public int getItemCount() {
return productList.size();
}
class ProductViewHolder extends RecyclerView.ViewHolder {
TextView textViewTitle, textViewShortDesc, textViewRating, textViewPrice;
ImageView imageView;
public ProductViewHolder(View itemView) {
super(itemView);
textViewTitle = itemView.findViewById(R.id.textViewTitle);
textViewShortDesc = itemView.findViewById(R.id.textViewShortDesc);
textViewRating = itemView.findViewById(R.id.textViewRating);
textViewPrice = itemView.findViewById(R.id.textViewPrice);
imageView = itemView.findViewById(R.id.imageView);
}
}
}
最佳答案
您可以在方法头中声明持有者final
public void onBindViewHolder(final ProductViewHolder holder, int position) {
Your code here
}
关于java - 单击项目后,如何从 RecyclerView 的适配器内的 drawable 更改 imageView 的图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52352368/