聊天recyclerview的type2不显示

时间:2019-05-19 14:24:22

标签: android firebase-realtime-database recycler-adapter

i want it

左侧显示为数据类,视图类型== 0

右侧显示为MeData类,视图类型== 2

目前,我想通过recyclerview使用两种多视图类型。

Data和MeData是两种类型的类。

如果getItemViewType(int位置)的返回值是0,则数据类的ui正常工作,但是如果返回值2,则Me数据类不起作用并发生错误。

+

为这两种视图类型定义了一个不同的函数,但没有为MeData定义getItemCount函数。

private ArrayList<Data> Data = new ArrayList<Data>();
private ArrayList<MeData> MeData = new ArrayList<MeData>();

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

        if(viewType == 0) {
            View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.chatitem, parent, false);
            return new ViewHolder0(view);   
        }
        else{
            View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.chatitem2, parent, false);
            return new ViewHolder2(view); 
        }

}

@Override
public int getItemViewType(int position) {
    // Just as an example, return 0 or 2 depending on position
    // Note that unlike in ListView adapters, types don't have to be contiguous
    //return position 0; <- not error
    return position % 2 * 2; <- error
}


@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {

    if(holder.getItemViewType() == 0){
        ((ViewHolder0) holder).onBind(Data.get(position));

    }
    else{
        ((ViewHolder2) holder).onBind(MeData.get(position));
    }

}
@Override
public int getItemCount() {
    return Data.size();
}




void addItem(Data data) {

    Data.add(data);
}

void addItem(MeData data) {
    MeData.add(data);
}

如果getItemViewType的返回值为2,为什么会发生错误?以及我们如何解决呢?

0 个答案:

没有答案