【发布时间】:2021-07-31 12:43:30
【问题描述】:
我正在开发一个 android 聊天应用程序,我希望与您聊天的用户的消息向右对齐,他们的消息向左对齐。这是让你区分消息属于谁的条件,我只能写在bindview holder上:
if(model.getUidSender().equals(fAuth.getCurrentUser().getUid()))
但是如何将项目向右或向左对齐?
我也考虑过膨胀两种不同的布局,但我应该去并在 CreateViewHolder 中操作,其中我不会有 model.getUidSender 值。我该如何解决这个问题?
这是我的完整代码:
@Override
protected void onStart() {
super.onStart();
CollectionReference collectRefMessage = FirebaseFirestore.getInstance().collection("roomChat")
.document("rooms")
.collection(chatId).document("message")
.collection("messages");
FirestoreRecyclerOptions<getMessage> options
= new FirestoreRecyclerOptions.Builder<getMessage>()
.setQuery(collectRefMessage.limit(1000).orderBy("date", Query.Direction.ASCENDING), getMessage.class)
.build();
FirestoreRecyclerAdapter<getMessage, getASetMsg> firestoreRecyclerAdapter = new FirestoreRecyclerAdapter<getMessage, getASetMsg>(options) {
@Override
protected void onBindViewHolder(@NonNull @NotNull getASetMsg holder, int position, @NonNull @NotNull getMessage model) {
holder.txtMsgText.setText(model.getText());
holder.dateATime.setText(model.getDate());
// uidCh = model.getUidSender();
//if(model.getUidSender().equals(fAuth.getCurrentUser().getUid()))
}
@NonNull
@NotNull
@Override
public getASetMsg onCreateViewHolder(@NonNull @NotNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.card_chat,parent,false);
getASetMsg viewHolder = new getASetMsg(view);
return viewHolder;
}
};
rView.setAdapter(firestoreRecyclerAdapter);
firestoreRecyclerAdapter.startListening();
}
public static class getASetMsg extends RecyclerView.ViewHolder {
TextView txtMsgText, dateATime;
public getASetMsg(@NonNull View itemView) {
super(itemView);
txtMsgText = itemView.findViewById(R.id.txtMsgText);
dateATime = itemView.findViewById(R.id.dateATime);
}
}
【问题讨论】:
标签: java android android-recyclerview