How does it handle recycling when we have heterogeneous views in a RecyclerView? For example in the following code, we are creating 3 different types of views to be used in a recycler view. Now after these views have been inflated, how does recyclerView know not to use these views for position 1 & 2 for rest of the items?
private class CustomAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private static final int TYPE_1 = 1;
private static final int TYPE_2 = 2;
private static final int TYPE_3 = 3;
// more types...
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
switch (viewType) {
case TYPE_1: inflate view_type_1
break;
case TYPE_2: inflate view_type_2
break;
case TYPE_3: inflate view_type_3
break;
}
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
switch (getItemViewType(position)) {
case TYPE_1:
break;
case TYPE_2:
break;
case TYPE_3:
break;
}
}
@Override
public int getItemViewType(int position) {
if(position == 1) {
return TYPE_1;
} else if(position == 2) {
return TYPE_2;
} else
return TYPE_3
}
}