Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/193.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何判断聊天室中的发送者或接收者?_Android_Firebase_Android Layout_Chatroom - Fatal编程技术网

Android 如何判断聊天室中的发送者或接收者?

Android 如何判断聊天室中的发送者或接收者?,android,firebase,android-layout,chatroom,Android,Firebase,Android Layout,Chatroom,如何判断聊天室中的发送者或接收者 我完成了我的功能,但发送方和接收方总是在左侧,如何判断右侧的发送方 我需要使用4种布局吗 这是我的ChatActivity.java private void loadChatContent() { adapter = new FirebaseRecyclerAdapter<ChatMessageModel, RecyclerView.ViewHolder>(options) { @Override

如何判断聊天室中的发送者或接收者

我完成了我的功能,但发送方和接收方总是在左侧,如何判断右侧的发送方

我需要使用4种布局吗

这是我的ChatActivity.java

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上添加其他两个布局,我如何判断发送方和接收方在哪里

这是我的火箭筒