Вы действительно можете сделать это:
1) В вашем классе чата определите тип сообщения: отправьте или получите. Добавьте атрибут или создайте метод, например isSent()
, чтобы проверить, является ли это отправляющим или получающим сообщением. Я буду использовать метод isSent()
в качестве примера.
2) Переопределите метод getItemViewType
в адаптере представления переработчика и верните int, представляющий тип (например, 0 для отправки и 1 для получения)
@Override
public int getItemViewType(int position) {
Chat chat = this.getItem(position);
if(chat.isSent()){
return 0;
}else{
return 1;
}
}
Чтобы получить элемент в вашем RecyclerViewAdapter
переопределенном getItem:
@Override
public Chat getItem(int pos) {
return super.getItem(getCount() - 1 - pos);
}
3) В вашем методе onCreateViewHolder
у вас будет доступ к типу представления, поэтому вы можете просто раздувать другой макет в зависимости от типа представления.
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
switch (viewType) {
case 0: //inflate and return view holder type 0
case 1: //inflate and return view holder type 1
}
}