【问题标题】:How to make different view item types with StickHeader in RecyclerView?如何在 RecyclerView 中使用 StickHeader 制作不同的视图项类型?
【发布时间】:2018-07-16 21:00:47
【问题描述】:

我正在开发一个安卓聊天应用。如何使这个信息栏显示例如:“用户离开了群组”或“用户更改了群组图标”,如下图所示:

黄色标记

【问题讨论】:

  • 看看这个answer
  • 感谢 Khaled Lela 的回答。我已经在聊天中使用 StickHeader 适配器作为日期贴纸,但我想知道是否还有其他方法!

标签: android android-layout chat


【解决方案1】:
@Override
public int getItemViewType(int position) {
 final Chat chat = getItem(position);
    if (chat.getType() == LEFT_CHAT) {
        return ITEM_TYPE_LEFT_CHAT;
    } else if(chat.getType() == JOIN_CHAT){
        return ITEM_TYPE_JOIN_CHAT;
    } else if(chat.getType() == CHANGE_CHAT_ICON){
        return ITEM_TYPE_CHAGE_CHAT_ICON;
    } else {
        return ITEM_TYPE_NORMAL;
    }
}


@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

    if (viewType == ITEM_TYPE_NORMAL) {
        View normalView = LayoutInflater.from(getContext()).inflate(R.layout.my_normal_row, null);
        return new MyNormalViewHolder(normalView); // view holder for normal items
    } else if (viewType == ITEM_TYPE_LEFT_CHAT) {
        View headerRow = LayoutInflater.from(getContext()).inflate(R.layout.left_chat_row, null);
        return new MyHeaderViewHolder(headerRow); // view holder for header items
    } else if (viewType == ITEM_TYPE_JOIN_CHAT) {
        View headerRow = LayoutInflater.from(getContext()).inflate(R.layout.join_chat_row, null);
        return new MyHeaderViewHolder(headerRow); // view holder for header items
    } else if (viewType == ITEM_TYPE_CHAGE_CHAT_ICON) {
        View headerRow = LayoutInflater.from(getContext()).inflate(R.layout.change_chat_icon_row, null);
        return new MyHeaderViewHolder(headerRow); // view holder for header items
    } 
}

【讨论】:

  • 这正是我所需要的。您能否与我分享完整的代码或至少是布局。非常感谢
猜你喜欢
  • 2020-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多