Android 如何判断聊天室中的发送者或接收者?
如何判断聊天室中的发送者或接收者 我完成了我的功能,但发送方和接收方总是在左侧,如何判断右侧的发送方 我需要使用4种布局吗 这是我的ChatActivity.javaAndroid 如何判断聊天室中的发送者或接收者?,android,firebase,android-layout,chatroom,Android,Firebase,Android Layout,Chatroom,如何判断聊天室中的发送者或接收者 我完成了我的功能,但发送方和接收方总是在左侧,如何判断右侧的发送方 我需要使用4种布局吗 这是我的ChatActivity.java private void loadChatContent() { adapter = new FirebaseRecyclerAdapter<ChatMessageModel, RecyclerView.ViewHolder>(options) { @Override
private void loadChatContent() {
adapter = new FirebaseRecyclerAdapter<ChatMessageModel, RecyclerView.ViewHolder>(options) {
@Override
public int getItemViewType(int position) {
return adapter.getItem(position).isPicture() ? 1:0;
}
@Override
protected void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position, @NonNull ChatMessageModel model) {
if(holder instanceof ChatTextHolder)
{
ChatTextHolder chatTextHolder = (ChatTextHolder)holder;
chatTextHolder.txt_email.setText(model.getName());
chatTextHolder.txt_chat_message.setText(model.getContent());
chatTextHolder.txt_time.setText(
DateUtils.getRelativeTimeSpanString(model.getTimeStamp(),
Calendar.getInstance().getTimeInMillis(), 0).toString());
}
else
{
ChatPictureHolder chatPictureHolder = (ChatPictureHolder)holder;
chatPictureHolder.txt_email.setText(model.getName());
chatPictureHolder.txt_chat_message.setText(model.getContent());
chatPictureHolder.txt_time.setText(
DateUtils.getRelativeTimeSpanString(model.getTimeStamp(),
Calendar.getInstance().getTimeInMillis(), 0).toString());
Glide.with(ChatActivity.this)
.load(model.getPictureLink())
.into(chatPictureHolder.img_preview);
}
}
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int viewType) {
View view;
//Log.d("Chat", String.valueOf(viewType));
if(viewType == 0)
{
view = LayoutInflater.from(viewGroup.getContext())
.inflate(R.layout.layout_message_text, viewGroup,false);
return new ChatTextHolder(view);
}
else
{
view = LayoutInflater.from(viewGroup.getContext())
.inflate(R.layout.layout_message_picture, viewGroup,false);
return new ChatPictureHolder(view);
}
}
};
adapter.registerAdapterDataObserver(new RecyclerView.AdapterDataObserver() {
@Override
public void onItemRangeInserted(int positionStart, int itemCount) {
super.onItemRangeInserted(positionStart, itemCount);
int friendlyMessageCount = adapter.getItemCount();
int lastVisiblePosition = layoutManager.findLastCompletelyVisibleItemPosition();
if(lastVisiblePosition == -1 ||
(positionStart >= (friendlyMessageCount -1) &&
lastVisiblePosition == (positionStart -1))){
recycler_chat.scrollToPosition(positionStart);
}
}
});
recycler_chat.setAdapter(adapter);
}
private void loadChatContent(){
适配器=新的FirebaseRecyclerAdapter(选项){
@凌驾
public int getItemViewType(int位置){
返回适配器.getItem(位置).isPicture()?1:0;
}
@凌驾
受保护的无效onBindViewHolder(@NonNull RecyclerView.ViewHolder holder,int位置,@NonNull ChatMessageModel模型){
if(固定器实例固定器)
{
动产持有人动产持有人=(动产持有人)持有人;
chatterxtholder.txt_email.setText(model.getName());
chatTextHolder.txt_chat_message.setText(model.getContent());
chatterxtholder.txt_time.setText(
DateUtils.getRelativeTimeSpanString(model.getTimeStamp(),
Calendar.getInstance().getTimeInMillis(),0.toString());
}
其他的
{
ChatPictureHolder ChatPictureHolder=(ChatPictureHolder)持有者;
chatPictureHolder.txt_email.setText(model.getName());
chatPictureHolder.txt_chat_message.setText(model.getContent());
chatPictureHolder.txt_time.setText(
DateUtils.getRelativeTimeSpanString(model.getTimeStamp(),
Calendar.getInstance().getTimeInMillis(),0.toString());
使用(聊天活动.此)滑动
.load(model.getPictureLink())
.into(chatPictureHolder.img_预览);
}
}
@非空
@凌驾
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup ViewGroup,int viewType){
视图;
//Log.d(“Chat”,String.valueOf(viewType));
如果(viewType==0)
{
view=LayoutInflater.from(viewGroup.getContext())
.充气(R.layout.layout\消息\文本,视图组,false);
返回新的固定器(视图);
}
其他的
{
view=LayoutInflater.from(viewGroup.getContext())
.充气(R.layout.layout\u消息\u图片,视图组,错误);
返回新ChatPictureHolder(视图);
}
}
};
registerAdapterDataObserver(新的RecyclerView.AdapterDataObserver(){
@凌驾
已插入的公用项目(int positionStart、int itemCount){
super.emrangeinserted(positionStart,itemCount);
int-friendlyMessageCount=adapter.getItemCount();
int lastVisiblePosition=layoutManager.findLastCompletelyVisibleItemPosition();
如果(lastVisiblePosition==-1||
(位置开始>=(friendlyMessageCount-1)&&
lastVisiblePosition==(positionStart-1))){
回收器\u聊天。滚动位置(位置开始);
}
}
});
回收器\u chat.setAdapter(适配器);
}
这是我的布局\消息\文本布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="horizontal"
android:padding="8dp"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<de.hdodenhof.circleimageview.CircleImageView
android:id="@+id/profile_image"
android:layout_width="60dp"
android:layout_height="60dp"
android:src="@drawable/ic_image_gray_24dp"/>
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/txt_email"
android:text="13123"
android:textSize="16dp"
android:fontFamily="@font/brandon_medium"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<com.daasuu.bl.BubbleLayout
android:layout_marginTop="12dp"
android:padding="8dp"
app:bl_bubbleColor="#E9ECF0"
app:bl_arrowDirection="left"
app:bl_arrowHeight="8dp"
app:bl_arrowPosition="16dp"
app:bl_arrowWidth="8dp"
app:bl_cornersRadius="6dp"
app:bl_strokeWidth="1dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:id="@+id/txt_chat_message"
android:layout_gravity="center_vertical"
android:layout_marginRight="4dp"
android:text="Hello!!!"
android:textColor="@android:color/black"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</com.daasuu.bl.BubbleLayout>
<TextView
android:id="@+id/txt_time"
android:text="5 minutes"
android:textSize="12sp"
android:fontFamily="@font/brandon_medium"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
</LinearLayout>
我怎样才能修改它呢
需要添加到其他2个版面以供发件人使用吗?还是不
如果我需要在ChatActivity.java上添加其他两个布局,我如何判断发送方和接收方在哪里
这是我的火箭筒