【问题标题】:Getting error in variable holder on accessing another view holder in Recycler View在 Recycler View 中访问另一个视图持有者时变量持有者出现错误
【发布时间】:2020-12-06 07:55:36
【问题描述】:

我在我的 java 类文件中的 getItemCount() 中声明了 2 个字符串

查看我的代码

package com.example.quizapp;

import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;

import com.bumptech.glide.Glide;

import java.util.List;

import de.hdodenhof.circleimageview.CircleImageView;

public class CategoryAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
    private List<CategoryModel> categoryModelList;

    public CategoryAdapter(List<CategoryModel> categoryModelList) {
        this.categoryModelList = categoryModelList;
    }

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

    @Override
    public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
       holder.setData(categoryModelList.get(position).getImageUrl(),categoryModelList.get(position).getTitle());
    }

    @Override
    public int getItemCount() {
        return categoryModelList.size();
    }

    class viewholder extends RecyclerView.ViewHolder{
        private CircleImageView imageView;
        private TextView title;
        private String url;

        public viewholder(@NonNull View itemView) {
            super(itemView);
            imageView = itemView.findViewById(R.id.image_view);
            title = itemView.findViewById(R.id.title);

        }
        private void setData(String url, String title){
            Glide.with(itemView.getContext()).load(url).into(imageView);
            this.title.setText(title);
        }
    }
}

我必须创建一个方法setData,在这个方法中,两个字符串数据类型传递了URLtitle,但是当我试图在这个方法中访问它们时它们都不起作用

@Override
    public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
       holder.setData(categoryModelList.get(position).getImageUrl(),categoryModelList.get(position).getTitle());
    }

这在 onBindViewHolder 中不起作用

错误图片

错误信息:

error: cannot find symbol
        holder.setData(categoryModelList.get(position).getImageUrl(),categoryModelList.get(position).getTitle());
              ^
  symbol:   method setData(String,String)
  location: variable holder of type ViewHolder

【问题讨论】:

    标签: android string android-recyclerview android-viewholder


    【解决方案1】:

    根本原因

    setData()viewholder 类的方法,但在onBindViewHolder 内部,holder 变量是RecyclerView.ViewHolder 的一个实例,这就是编译器抛出该错误的原因。

    解决方案

    holder 转换为您的viewholder 类。从

    更改您的代码
    holder.setData(categoryModelList.get(position).getImageUrl(),categoryModelList.get(position).getTitle());
    

    String url = categoryModelList.get(position).getImageUrl();
    String title = categoryModelList.get(position).getTitle();
    ((viewholder) holder).setData(url, title);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多