I'm using a RecyclerView
to display some data. For each item in my RecyclerView I have created a custom layout which holds beside other views a RecyclerView. So I have a nested RecyclerView under each item.
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v7.widget.RecyclerView
android:layout_width="180dp"
android:layout_height="45dp"
android:id="@+id/recycler_view"/>
//Other text views
</RelativeLayout>
The layout for the inner RecyclerView is very simple, an ImageView for each item, like in the screenshot below:
This is my adapter class for the outer ReyclerView:
class UserViewHolder extends RecyclerView.ViewHolder {
View itemView;
RecyclerView recyclerView;
UserViewHolder(View itemView) {
super(itemView);
this.itemView = itemView;
recyclerView = itemView.findViewById(R.id.recycler_view);
}
void bind(User user) {
itemView.setOnClickListener(view -> {
//Move to user Activity
});
UserAdapter adapter = new UserAdapter(user.list);
recyclerView.setAdapter(adapter);
}
}
As you can see, I'm creating a new UserAdapter
object for each RecyclerView
that exist within my item so each inner RecyclerView to have its own adapter. Unfortunately I get:
No adapter attached; skipping layout
How to set the adapter for the inner RecyclerView, so I cannot get this error anymore? Can it be set outside my outer adapter class? Thanks!
Edit:
@Override
protected void onBindViewHolder(@NonNull UserViewHolder userViewHolder, int position, @NonNull User user) {
userViewHolder.bind(user);
}
What about doing like this:
So,
void bind
is used only to update the adapter dataset...