Android Socket实现多个客户端聊天布局

 更新时间:2022年04月25日 12:20:33   作者:Frank Kong  
这篇文章主要为大家详细介绍了Android Socket实现多个客户端聊天布局,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了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();
    }
}

效果:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Android PickerView滚动选择器的使用方法

    Android PickerView滚动选择器的使用方法

    这篇文章主要为大家详细介绍了Android PickerView滚动选择器的使用方法,感兴趣的小伙伴们可以参考一下
    2016-03-03
  • 使用Docker来加速构建Android应用的基本部署思路解析

    使用Docker来加速构建Android应用的基本部署思路解析

    这篇文章主要介绍了使用Docker来加速构建Android应用的部署思路解析,在服务器中通过Docker镜像来获得更高效的开发和测试流程,需要的朋友可以参考下
    2016-01-01
  • AndroidStudio升级4.1后启动失败Plugin问题解决

    AndroidStudio升级4.1后启动失败Plugin问题解决

    这篇文章主要介绍了AndroidStudio升级4.1后启动失败Plugin问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • Android如何快速集成腾讯Bugly

    Android如何快速集成腾讯Bugly

    这篇文章主要介绍了Android如何快速集成腾讯Bugly,帮助大家更好的理解和学习使用Android开发,感兴趣的朋友可以了解下
    2021-04-04
  • Android Studio升级到3.0后遇到的坑

    Android Studio升级到3.0后遇到的坑

    自从谷歌发布Android Studio 3.0版本后,一直心向往之,终于抽时间做了下升级处理,现在把升级过程中遇到的一些问题以及解决方案分享给大家,希望对大家能给有事帮助
    2017-11-11
  • Android RxJava创建操作符Interval

    Android RxJava创建操作符Interval

    这篇文章主要为大家详细介绍了Android RxJava创建操作符Interval的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-12-12
  • android 实现类似微信缓存和即时更新好友头像示例

    android 实现类似微信缓存和即时更新好友头像示例

    本篇文章主要介绍了android 实现类似微信缓存和即时更新好友头像示例,具有一定的参考价值,有兴趣的可以了解一下。
    2017-01-01
  • Android Coil对比Glide深入分析探究

    Android Coil对比Glide深入分析探究

    这篇文章主要介绍了Android Coil对比Glide,Coil是Android上的一个全新的图片加载框架,它的全名叫做coroutine image loader,即协程图片加载库
    2023-02-02
  • 融会贯通Android Jetpack Compose中的Snackbar

    融会贯通Android Jetpack Compose中的Snackbar

    这篇文章主要为大家介绍了融会贯通Android Jetpack Compose中的Snackbar方法及使用,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-01-01
  • Android开发实现多进程弹窗效果

    Android开发实现多进程弹窗效果

    这篇文章主要为大家详细介绍了Android开发实现多进程弹窗效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-10-10

最新评论