'Recyclerview not call any Adapter method: onCreateViewHolder, onBindViewHolder

Here are my codes for MyAdapter, ActivityMain, MinActivity, and User

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> {

   Context context;
   ArrayList<User> list;

   public MyAdapter(Context context, ArrayList<User> list) {
     this.context = context;
     this.list = list;
   }

   @NonNull
   @Override
   public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
    View v = LayoutInflater.from(context).inflate(R.layout.item, parent, false);
    return new MyViewHolder(v);
   }

   @Override
   public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
       
     // here is the problem that I don't know how to fix][1]
     // I'm tryin to pass data from firebase to Recyclerview
     // error I'm getting here is:
     // [Cannot resolve method 'getFirstName' in 'User'
     // Cannot resolve method 'getLastName' in 'User'
     // Cannot resolve method 'getAge' in 'User']

              
         User user = list.get(position);
         holder.FirstName.setText(user.getFirstName());
         holder.LastName.setText(user.getLastName());
         holder.Age.setText(user.getAge());
        
    }
        
    @Override
    public int getItemCount() {
         return list.size();
    }
        
   public static class MyViewHolder extends RecyclerView.ViewHolder{
        
         TextView FirstName, LastName, Age;
        
          public MyViewHolder(@NonNull View itemView) {
             super(itemView);
        
              FirstName = itemView.findViewById(R.id.tvFirstName);
              LastName = itemView.findViewById(R.id.tvLastName);
              Age = itemView.findViewById(R.id.tvAge);
        
           }
        }
        
    }
      

This is MainActivity code

 public class MainActivity extends AppCompatActivity {
            
       RecyclerView recyclerView;
       DatabaseReference database;
       MyAdapter myAdapter;
       ArrayList<User> list;
            
       @Override
       protected void onCreate(Bundle savedInstanceState) {
              super.onCreate(savedInstanceState);
              setContentView(R.layout.activity_Main);
            
              recyclerView = findViewById(R.id.userList);
              database = FirebaseDatabase.getInstance().getReference("User");
              recyclerView.setHasFixedSize(true);
                 
              recyclerView.setLayoutManager(new LinearLayoutManager(this));
            
              list = new ArrayList<>();
              myAdapter = new MyAdapter(this,list);
                  
              recyclerView.setAdapter(myAdapter);
            
              database.addValueEventListener(new ValueEventListener() {
                        @Override
                        public void onDataChange(@NonNull DataSnapshot snapshot) {
            
                            for (DataSnapshot dataSnapshot : snapshot.getChildren()){
            
                                User user = dataSnapshot.getValue(User.class);
                                list.add(user);
            
                            }
                            myAdapter.notifyDataSetChanged();
                        }
                        @Override
                        public void onCancelled(@NonNull DatabaseError error) {
                        }
                    });
                }
            }

This is User codes which I generated with getter

   public class User {
            
        String FirstName, LastName, Age;
            
        public String getFirstName() {
            return FirstName;
        }
            
        public String getLastName() {
            return LastName;
        }
            
        public String getAge() {
            return Age;
        }
            
        {
            
            
        }
 }
  

This is my layout file

 <?xml version="1.0" encoding="utf-8"?>
 <androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        app:cardElevation="8dp"
        app:cardCornerRadius="8dp"
        android:layout_margin="16dp">
            
                <LinearLayout
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="16dp"
                    android:orientation="vertical">
            
                    <LinearLayout
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center_vertical"
                        android:orientation="horizontal">
            
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="First Name :"
                            android:textColor="@color/black"
                            android:textSize="26sp"
                            android:textStyle="bold"/>
            
                        <TextView
                            android:id="@+id/tvFirstName"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_marginLeft="8dp"
                            android:text="Arya"
                            android:textColor="@color/black"
                            android:textSize="20sp" />
            
                    </LinearLayout>
            
                    <LinearLayout
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center_vertical"
                        android:orientation="horizontal">
            
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="@string/last_name"
                            android:textColor="@color/black"
                            android:textSize="26sp"
                            android:textStyle="bold"/>
            
                        <TextView
                            android:id="@+id/tvLastName"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_marginStart="8dp"
                            android:text="@string/stark"
                            android:textColor="@color/black"
                            android:textSize="20sp" />
            
                    </LinearLayout>
            
                    <LinearLayout
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center_vertical"
                        android:orientation="horizontal">
            
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="@string/age"
                            android:textColor="@color/black"
                            android:textSize="26sp"
                            android:textStyle="bold"/>
            
                        <TextView
                            android:id="@+id/tvAge"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_marginLeft="8dp"
                            android:text="18"
                            android:textColor="@color/black"
                            android:textSize="20sp" />
            
                    </LinearLayout>
                </LinearLayout>
            </androidx.cardview.widget.CardView>

When I hit RUN it gives me this error:

Failed to compile values file

I'm new to coding.



Solution 1:[1]

you can change your code like this

holder.FirstName.setText(list.getFirstName().get(position));
holder.LastName.setText(list.getLastName().get(position));
holder.Age.setText(list.getAge().get(position);

and you should change this code position

myAdapter = new MyAdapter(this,list);
              
recyclerView.setAdapter(myAdapter);

into under this code

database.addValueEventListener(new ValueEventListener() {
                    @Override
                    public void onDataChange(@NonNull DataSnapshot snapshot) {
        
                        for (DataSnapshot dataSnapshot : snapshot.getChildren()){
        
                            User user = dataSnapshot.getValue(User.class);
                            list.add(user);
        
                        }
                        myAdapter.notifyDataSetChanged();
                    }
                    @Override
                    public void onCancelled(@NonNull DatabaseError error) {
                    }
                });

hope it can solve your problem :)

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Fakhri Khairi