-3
package com.jakewalther.x;

import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import java.util.List;

public class adapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
Context context;
List<users> users;
public adapter(List<users> getDataAdapter, Context context){
    super();
    this.users = getDataAdapter;
    this.context = context;
}

public adapter(List<users> usersList, LoadXOrgasm context) {
}

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

@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
    users getDataAdapter1 =  users.get(position);
    holder.UserName.setText(getDataAdapter1.getName());
}

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

class ViewHolder extends RecyclerView.ViewHolder {
    public TextView UserName;
    public ViewHolder(View itemView) {
        super(itemView);
        UserName = (TextView) itemView.findViewById(R.id.TextViewCard) ;
    }
}

I am trying to make an adapter for a recycler view. Getting a compile error cannot find UserName at the line

holder.UserName.setText(getDataAdapter1.getName()); 

I have tried everything I can't figure out why the code won't run.

Vidhi Dave
  • 5,614
  • 2
  • 33
  • 55

2 Answers2

1

Your problem is You are extending ViewHolder of RecylerView, not your custom ViewHolder.in onBindViewMethod() you have to check that holder instance will be of Your custom Viewholder instance.

 if(holder intanceOf ViewHolder ){ //here ViewHolder is your custom holder class 

            ((ViewHolder ) holder).UserName((getDataAdapter1.getName());

        }
Goku
  • 9,102
  • 8
  • 50
  • 81
Farhana Naaz Ansari
  • 7,524
  • 26
  • 65
  • 105
-1

replace your onBindViewHolder with this,

 @Override
    public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
        ViewHolder viewHolder = (ViewHolder)holder;
        users getDataAdapter1 =  users.get(position);
        viewHolder.UserName.setText(getDataAdapter1.getName());
    }
hasan_shaikh
  • 1,434
  • 1
  • 15
  • 38