AndroidSocket实现多个客户端聊天布局

Dabria ·
更新时间:2024-11-10
· 408 次阅读

本文实例为大家分享了Android Socket实现多个客户端聊天布局的具体代码,供大家参考,具体内容如下

服务器Socket接受到客户端发送的消息之后,转发给容器中的其他Socket,别的客户端接受到显示在左边,自己发的显示在右边。

消息类

public class Msg {     private String msg;     private int left_right;     public Msg(String msg,int left_right){         this.msg = msg;         this.left_right = left_right;     }     public String getMsg(){         return msg;     }     public int getLeft_right(){         return left_right;     } }

item布局

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"     android:orientation="vertical"     android:layout_width="match_parent"     android:layout_height="wrap_content">     <LinearLayout         android:id="@+id/left"         android:background="@drawable/messageleft"         android:layout_width="wrap_content"         android:layout_height="wrap_content"         android:layout_gravity="left">         <TextView             android:id="@+id/text_left"             android:textSize="16dp"             android:textColor="#000"             android:layout_width="wrap_content"             android:layout_height="wrap_content" />     </LinearLayout>     <LinearLayout         android:id="@+id/right"         android:layout_gravity="right"         android:background="@drawable/messageright"         android:layout_width="wrap_content"         android:layout_height="wrap_content">         <TextView             android:id="@+id/text_right"             android:textSize="16dp"             android:textColor="#000"             android:layout_width="wrap_content"             android:layout_height="wrap_content" />     </LinearLayout> </LinearLayout>

适配器

public class MsgAdapter extends RecyclerView.Adapter<MsgAdapter.ViewHolder>{     private List<Msg> msgs;     private static final int MES_LEFT = 0,MES_RIGHT = 1;     static class ViewHolder extends RecyclerView.ViewHolder{         TextView text_left,text_right;         LinearLayout linearLayout_left,linearLayout_right;         public ViewHolder(View view){             super(view);             text_left = (TextView) view.findViewById(R.id.text_left);             text_right = (TextView) view.findViewById(R.id.text_right);             linearLayout_left = (LinearLayout) view.findViewById(R.id.left);             linearLayout_right = (LinearLayout) view.findViewById(R.id.right);         }     }     public MsgAdapter(List<Msg> msgs){         this.msgs = msgs;     }     @Override     public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {         View view = LayoutInflater.from(parent.getContext())                 .inflate(R.layout.msg_item,parent,false);         ViewHolder holder = new ViewHolder(view);         return  holder;     }     @Override     public void onBindViewHolder(ViewHolder holder, int position) {         Msg msg = msgs.get(position);         //如果显示左边,右边隐藏         if(msg.getLeft_right()==MES_LEFT) {             holder.text_left.setText(msg.getMsg());             holder.linearLayout_right.setVisibility(View.GONE);             holder.linearLayout_left.setVisibility(View.VISIBLE);         }         //如果显示右边,左边隐藏         else if(msg.getLeft_right()==MES_RIGHT){             holder.text_right.setText(msg.getMsg());             holder.linearLayout_left.setVisibility(View.GONE);             holder.linearLayout_right.setVisibility(View.VISIBLE);         }     }     @Override     public int getItemCount() {         return msgs.size();     } }

效果:



客户端 布局

需要 登录 后方可回复, 如果你还没有账号请 注册新账号
相关文章