简体   繁体   English

无法从 ViewHolder (RecycleView) 调用 Adapter(onBindViewHolder) 中的方法

[英]Unable to call method in Adapter(onBindViewHolder) from ViewHolder (RecycleView)

I worked on same project in previous Android Studio but now In this newer version am unable to code on the same Project!我在以前的 Android Studio 中从事过同一个项目,但现在在这个较新的版本中,我无法在同一个项目上编码!
I wrote setData method in Viewholder(Adapter) and when am trying to call this method in onBindViewHolder{.. } It is not recognizing this method.我在Viewholder(Adapter)中编写了setData方法,当我尝试在onBindViewHolder{.. }中调用此方法时,它无法识别此方法。 (HAVE A LOOK AT UPLOADED IMAGE) (查看上传的图像)
When I press Atl + Enter it shows "rename reference".当我按Atl + Enter时,它显示“重命名参考”。

Error throwing line - 34 Gist: https://gist.github.com/Reevan799/0babda6746136105f3c4fbdab1c12ae5#file-categoryadapter-java-L34错误抛出线 - 34 要点: https://gist.github.com/Reevan799/0babda6746136105f3c4fbdab1c12ae5#file-categoryadapter-java-L34

Error Am Getting Image URL: https://ibb.co/Kq3rg3G获取图像时出错 URL: https://ibb.co/Kq3rg3G

Code:代码:

   package com.example.generalknowledgequiz;

   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());  #Error Causing Line..
       }

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

       class Viewholder extends RecyclerView.ViewHolder{

           private CircleImageView imageView;
           private TextView title;

           public Viewholder(@NonNull View itemView) {
               super(itemView);
               imageView = itemView.findViewById(R.id.imageview);
        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 is shown in Red color in Android Studio ( onBindViewHolder ) setData在 Android Studio ( onBindViewHolder ) 中以红色显示

Change generic type you used for RecyclerView.Adapter .更改用于RecyclerView.Adapter的泛型类型。 Your class declaration should be:您的 class 声明应为:

public class CategoryAdapter extends RecyclerView.Adapter<CategoryAdapter.Viewholder> {
...
}

It will also require you to change the overridden methods declaration.它还需要您更改覆盖的方法声明。

  1. return type changed to Viewholder :返回类型更改为Viewholder

     @NonNull @Override public Viewholder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.category_item,parent,false); return new Viewholder(view); }
  2. Argument type changed to Viewholder :参数类型更改为Viewholder

     @Override public void onBindViewHolder(@NonNull Viewholder holder, int position) { holder.setData(categoryModelList.get(position).getImageurl(),categoryModelList.get(position).getTitle()); #Error Causing Line.. }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM