回收站视图不起作用。 我想聊天程序。为了命令,我的消息显示必须针对不同对手的消息。 但是一样 如果向下滚动以停止
//ChatRecyclerAdapter code
public class ChatRecyclerAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
// adapter에 들어갈 list 입니다.
private ArrayList<Data> Data = new ArrayList<>();
private ArrayList<MeData> MeData = new ArrayList<>();
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
... }
@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 % 2 * 2;
}
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
// Item을 하나, 하나 보여주는(bind 되는) 함수입니다.
if (holder instanceof ViewHolder0) {
((ViewHolder0) holder).onBind(Data.get(position));
} else {
((ViewHolder2) holder).onBind(MeData.get(position));
}
}
@Override
public int getItemCount() {
// RecyclerView의 총 개수 입니다.
return Data.size();
}
void addItem(Data data) {
// 외부에서 item을 추가시킬 함수입니다.
Data.add(data);
}
void addItem(MeData data) {
// 외부에서 item을 추가시킬 함수입니다.
MeData.add(data);
}
// RecyclerView의 핵심인 ViewHolder 입니다.
// 여기서 subView를 setting 해줍니다.
class ViewHolder0 extends RecyclerView.ViewHolder {
...
}
class ViewHolder2 extends RecyclerView.ViewHolder {
...
}
}
// MainCode use Recyclerview
if(chatData.getUserName() == MyName){
MeData data = new MeData();
data.setTitle(chatData.getMessage());
adapter.addItem(data);
}
else{
Data data = new Data();
data.setTitle(OtherName);
data.setContent(chatData.getMessage());
data.setResId(R.drawable.background);
adapter.addItem(data);
}
adapter.notifyDataSetChanged();
MeData,聊天项目->我的消息
数据,chaitem2->对手消息
我使用2个数据类和2个viewtype(2 viewholder)
进行聊天显示