Richu Jain
Richu Jain

Reputation: 51

Cannot resolve symbol ViewHolder

I was trying to implement a recycler view. but i am not able to use viewHolder. Please find a solution. Thanks in advance

Screenshot

Upvotes: 4

Views: 12945

Answers (3)

Dilip
Dilip

Reputation: 2734

You can try this way hope so it will be helpful for you.

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

            private List<String> myList;

            public class MyViewHolder extends RecyclerView.ViewHolder {
                public TextView title, year, genre;

                public MyViewHolder(View view) {
                    super(view);
                    title = (TextView) view.findViewById(R.id.title);
                    genre = (TextView) view.findViewById(R.id.genre);
                    year = (TextView) view.findViewById(R.id.year);
                }
            }


            public YourAdapter(List<String> list) {
                this.myList = list;
            }

            @Override
            public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
                View itemView = LayoutInflater.from(parent.getContext())
                        .inflate(R.layout.list_row, parent, false);

                return new MyViewHolder(itemView);
            }

            @Override
            public void onBindViewHolder(MyViewHolder holder, int position) {
                Movie movie = myList.get(position);
                holder.title.setText(myList.get(position).getTitle());

            }

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

Upvotes: 6

gbruscatto
gbruscatto

Reputation: 696

Try to use just ViewHolder instead of RecyclerView.Adapter.ViewHolder:

@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    return null;
}

...

And make sure you have a ViewHolder class inside your adapter class:

public class ViewHolder extends RecyclerView.ViewHolder {
    public ViewHolder(View v) {
        super(v);
    }
}

Hope it helps.

Upvotes: 3

sam nikzad
sam nikzad

Reputation: 1360

You must create a new Class inside your Adapter Class like bellow :

public class viewHolder extends RecyclerView.ViewHolder {

    public TextView text;
    public ImageView imageView;


    public viewHolder(View v) {
        super(v);
        text = (TextView) v.findViewById(R.id.text);
        imageView = (ImageView) v.findViewById(R.id.icon);

    }
}

Upvotes: 2

Related Questions