ViewHolder views must not be attached when created ViewHolder views must not be attached when created android android

ViewHolder views must not be attached when created


Actually, your ViewHolder expects a View inflated from R.layout.text_row_item rather than a descendant of the latter. So, if you pass the inflated view the problem will be resolved.

So, you should correct your code to this:

public class MyRvAdapter extends RecyclerView.Adapter<MyRvAdapter.ViewHolder> {    private String[] mDataset;    public static class ViewHolder extends RecyclerView.ViewHolder {        // each data item is just a string in this case        public TextView mTextView;        public ViewHolder(View v) {            super(v);            mTextView = v.findViewById(r.id.display_name);        }    }    public MyRvAdapter(String[] myDataset) {        mDataset = myDataset;    }    @NonNull    @Override    public MyRvAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {        View v = LayoutInflater.from(parent.getContext())            .inflate(R.layout.text_row_item, parent, false);        ViewHolder vh = new ViewHolder(v);        return vh;    }    @Override    public void onBindViewHolder(@NonNull MyRvAdapter.ViewHolder holder, int position) {        holder.mTextView.setText(mDataset[position]);    }    @Override    public int getItemCount() {        return mDataset.length;    }}


Wait till view is created before binding.

Remove TextView userNameInList= v.findViewById(R.id.display_name); from your MyRvAdapter.ViewHolder.

And bind in ViewHolder as mTextView = v.findViewById(r.id.display_name);.


In my case, I fixed it changing this line

val view = parent.inflate(R.layout.your_item)

to

val view = parent.inflate(R.layout.your_item, false)