java - 单击项目后,如何从 RecyclerView 的适配器内的 drawable 更改 imageView 的图像?

标签 java android android-recyclerview

  1. 我从 SERVER 获取数据以填充 RECYCLER View
  2. 我在每个 recyclerview 行中都有一个 imageview
  3. 当我点击那个 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/

相关文章:

java - hibernate 中的更新与合并方法

java - 输入不匹配异常: entering into infinite loop?

java - AsyncTask.THREAD_POOL_EXECUTOR 返回值

android - 编译运行项目时唤醒和解锁安卓手机屏幕?

android - 在 RecyclerView 中使用 ExoPlayer - 官方方式

android - 如何使用java将所选项目(我的recyclerview中的多个项目)值从适配器传递到android中的 fragment

java - RxJava 一个 Retrofit Network 调用订阅

java - 在 Hibernate 中比较两个对象的问题

java - 传递对 Activity Intent 的引用

android - 如果 RecyclerView 为空则显示 Toast 消息