Вы можете создать два макета: один со значком +, а другой - где изображение будет отображаться для вашего адаптера сетки.Затем вы можете проверить положение и вернуть нужный макет.
private static final int VIEW_TYPE_ONE = 1;
private static final int VIEW_TYPE_TWO = 2;
// Determines the appropriate ViewType according to the position
@Override
public int getItemViewType(int position) {
if (position == 0 ) {
return VIEW_TYPE_ONE;
} else {
return VIEW_TYPE_TWO;
}
}
Затем в вашем onCreateviewHolder:
// Inflates the appropriate layout according to the ViewType.
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view;
if (viewType == VIEW_TYPE_ONE) {
view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.your_plus_icon_layout, parent, false);
return new PlusIconViewHolder(view);
} else if (viewType == VIEW_TYPE_MESSAGE_TWO) {
view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.your_normal_image_layout, parent, false);
return new NormalViewHolder(view);
}
return null;
}
В вашем onBindViewHolder,
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
switch (holder.getItemViewType()) {
case VIEW_TYPE_ONE:
holder.bind();
break;
case VIEW_TYPE_MESSAGE_TWO:
holder.bind(imageList.get(position -1));
}
}
Обратите внимание, что у меня есть позиция отправки - 1 элемент из списка. Это потому, что изображения будут отображаться из 1 индекса, потому что индекс 0 занят вашим значком +.И да, вам также нужно создать двух владельцев для их соответствующих функций.