目录

一、主要内容

二、核心代码

三、效果展示


在UI的基础上: 安卓 类微信界面开发(一)_qingsongxyz的博客-CSDN博客

一、主要内容

对聊天主界面chatFragement进行完善,使用RecyclerView实现滚动列表,使用

SwipeRefreshLayout实现下拉刷新,以及简单了点击弹出消息框。

二、核心代码

编写RecyclerView滚动列表中的行样式文件layout_chat_item.xml:

<?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"xmlns:tools="http://schemas.android.com/tools"android:id="@+id/layout_chat_item1"android:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"><ImageViewandroid:id="@+id/layout_chat_item_imageView"android:layout_width="wrap_content"android:layout_height="match_parent"android:layout_marginLeft="10dp"tools:srcCompat="@drawable/avatars1" /><LinearLayoutandroid:id="@+id/layout_chat_item2"android:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="vertical"><LinearLayoutandroid:id="@+id/layout_chat_item3"android:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"><TextViewandroid:id="@+id/layout_chat_item_textView1"android:layout_width="270dp"android:layout_height="wrap_content"android:layout_marginLeft="15dp"android:layout_marginTop="10dp"android:layout_marginBottom="20dp"android:text="TextView1"android:textSize="20sp" /><TextViewandroid:id="@+id/layout_chat_item_textView3"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginTop="6dp"android:text="TextView3"android:textSize="12sp"android:gravity="center_horizontal"/></LinearLayout><TextViewandroid:id="@+id/layout_chat_item_textView2"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginLeft="15dp"android:text="TextView2"android:textSize="14sp" /><Viewandroid:layout_width="match_parent"android:layout_height="0.5dp"android:layout_marginTop="10dp"android:background="@color/black" /></LinearLayout>
</LinearLayout>

布局效果:

编写ChatAdapter.class继承自RecyclerView.Adapter:

public class ChatAdapter extends RecyclerView.Adapter<ChatAdapter.ChatViewHolder> {private Context context;private List<Map<String, Object>> data;public ChatAdapter(Context context, List<Map<String, Object>> data) {this.context = context;this.data = data;}@NonNull@Overridepublic ChatViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {return new ChatViewHolder(LayoutInflater.from(context).inflate(R.layout.layout_chat_item, parent, false));}@Overridepublic void onBindViewHolder(@NonNull ChatViewHolder holder, int position) {holder.textView1.setText(data.get(position).get("name").toString());holder.textView2.setText(data.get(position).get("message").toString());holder.textView3.setText(data.get(position).get("time").toString());holder.imageView.setImageResource(Integer.parseInt(data.get(position).get("avatars").toString()));holder.linearLayout.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {ImageView avatars = view.findViewById(R.id.layout_chat_item_imageView);TextView name = view.findViewById(R.id.layout_chat_item_textView1);TextView message = view.findViewById(R.id.layout_chat_item_textView2);TextView time = view.findViewById(R.id.layout_chat_item_textView3);AlertDialog.Builder builder = new AlertDialog.Builder(context);builder.setIcon(avatars.getDrawable());builder.setTitle(name.getText() + ":");builder.setMessage("Date:" + time.getText() + "\n" + message.getText());builder.setPositiveButton("我知道了",new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialogInterface, int i) {}});AlertDialog dialog = builder.create();dialog.show();}});}@Overridepublic int getItemCount() {return data.size();}public class ChatViewHolder extends RecyclerView.ViewHolder {TextView textView1, textView2, textView3;ImageView imageView;LinearLayout linearLayout;public ChatViewHolder(@NonNull View itemView) {super(itemView);textView1 = itemView.findViewById(R.id.layout_chat_item_textView1);textView2 = itemView.findViewById(R.id.layout_chat_item_textView2);textView3 = itemView.findViewById(R.id.layout_chat_item_textView3);imageView = itemView.findViewById(R.id.layout_chat_item_imageView);linearLayout = itemView.findViewById(R.id.layout_chat_item1);}}
}

修改ChatFragment.class:


public class ChatFragment extends Fragment implements SwipeRefreshLayout.OnRefreshListener {private View view;private RecyclerView fragment_chat_recyclerView;private SwipeRefreshLayout swipeRefreshLayout;private ChatAdapter chatAdapter;private Context context;private List<Map<String, Object>> chatData = new ArrayList<>();public ChatFragment(Context context) {this.context = context;}@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {// Inflate the layout for this fragmentview = inflater.inflate(R.layout.fragment_chat, container, false);fragment_chat_recyclerView = view.findViewById(R.id.fragment_chat_recyclerView);swipeRefreshLayout = view.findViewById(R.id.fragment_chat_swipeRefreshLayout);initData();configSwipeRefreshLayout();chatAdapter = new ChatAdapter(context, chatData);LinearLayoutManager manager = new LinearLayoutManager(context);manager.setOrientation(RecyclerView.VERTICAL);fragment_chat_recyclerView.setLayoutManager(manager);fragment_chat_recyclerView.setAdapter(chatAdapter);return view;}private void configSwipeRefreshLayout() {swipeRefreshLayout.setSize(CircularProgressDrawable.LARGE);swipeRefreshLayout.setColorSchemeResources(android.R.color.holo_blue_bright,android.R.color.system_accent1_200, android.R.color.system_neutral2_300);swipeRefreshLayout.setOnRefreshListener(this);}private void initData() {String[] name = {"倚楼听风雨", "璎婲", "の大脸猫", "静秋┐", ">.<","旧街凉风", "初見", "雨嘉ψ", "鸢尾*", "凉栀"};String[] message = {"在吗?", "哈哈哈", "...", "呜呜呜", "呵呵","吃饭了吗?", "~~~", "今天有空吗?", "出去玩呀", "爱你哟"};String[] time = {"12:10", "昨天", "3月15日", "3月15日", "3月15日","9:00", "5:00", "4月17日", "18:00", "9月1日"};Integer[] avatars = {R.drawable.avatars1, R.drawable.avatars2, R.drawable.avatars3,R.drawable.avatars4, R.drawable.avatars5, R.drawable.avatars6,R.drawable.avatars7, R.drawable.avatars8, R.drawable.avatars9,R.drawable.avatars10,};for (int i = 0; i < name.length; i++) {HashMap<String, Object> d = new HashMap<>();d.put("name", name[i]);d.put("message", message[i]);d.put("time", time[i]);d.put("avatars", avatars[i]);chatData.add(d);}}@Overridepublic void onRefresh() {//延时2snew Handler().postDelayed(new Runnable() {@Overridepublic void run() {swipeRefreshLayout.setRefreshing(false);}}, 3000);}
}

三、效果展示

项目源码Gitee:青松xyz/WechatForm

安卓 类微信开发(二)相关推荐

  1. 安卓 类微信开发(三)

    目录 一.主要内容 二.核心代码 三.效果展示 在上次的基础上: 安卓 类微信开发(二)_qingsongxyz的博客-CSDN博客 一.主要内容 完成好友聊天界面的开发和activity之间的数据传 ...

  2. 微信开发 -- 二维码生成

    微信开发 – 二维码生成 生成二维码无非就是将一段字符串内容以某种特定的方式进行编码, 最终得到一个图片. 这里使用 C# 生成二维码我用到了 QrCode.Net 这个 Nuget 包. 这里我们创 ...

  3. 解决安卓版微信扫描二维码白屏的问题

    今天遇到一个问题,做的网站,通过安卓手机微信扫一扫二维码或者识别二维码链接无法跳转,显示白屏,但是ios的微信扫码就没有问题,一开始认为是安卓版微信做了限制,后来分析了下扫码后跳转的链接,发现了这个问 ...

  4. 安卓 类微信界面开发(一)

    目录 一.编写微信头部. 二.编写微信底部. 三.编写四个内容区. 四.编写MainActivity和activity_main.xml文件. 项目结构: 一.编写微信头部. 创建layout_hea ...

  5. 安卓 类微信界面实现

    目录 1.引言 2.实现 1.写出顶部和底部的layout 2.主页面 3.写四个fragment用于显示不同的内容 4.写MainActivity中的代码 3.总结 1.引言 这是我第一次接触安卓的 ...

  6. Android类微信(二)

    目录 一.设计目标 二.功能实现 点击实现详情页码的跳转 点击实现回传值效果 三.运行效果 四.源码仓库地址 一.设计目标 1.实现对Activity生命周期的理解,使用log展示生命周期的状态变化: ...

  7. 订阅号的编辑模式----微信开发二(1)

    1.订阅号的编辑模式 1.1 管理菜单>>素材管理 1.单图文    2.多图文 注意:如果需要添加更多的图文信息可以点击"+"号进行添加  但是最多只能添加8条图文信 ...

  8. 安卓实现类微信门户页面

    安卓类微信门户页面框架设计 简介:移动开发实验一 一.设计目标 ​ 使用Android Studio中的fragment,activity等设计一个类微信门户页面. ​ 要求:不使用UNIAPP技术进 ...

  9. Android Studio安卓开发-类微信UI设计

    新建一个安卓空项目,语言采用Java,基于Android SDK11.0实现,使用虚拟设备Pixel 5 API 30. 实现顶部微信栏-layout_top.xml. 创建时选择LinearLayo ...

最新文章

  1. 2013年上半年全国计算机技术与软件专业技术资格(水平)考试工作安排
  2. 牛客题霸 NC5 二叉树根节点到叶子节点的所有路径和
  3. 属实逼真,决策树可视化!
  4. 神经网络 顾晓东_基于神经网络的图像边缘检测方法
  5. h0152. 故事计算题(计蒜客——西邮K题)解析
  6. 视频隐身衣:物体移除、去水印、后期处理毫无痕迹
  7. 好程序员web前端培训分享JavaScript学习笔记ajax及ajax封装
  8. radius认证服务器系统,03-Radius认证配置举例
  9. 【安全脚本】 centos 下的病毒木马查杀脚本
  10. 微信登录app提示服务器异常,微信登录异常怎么办?微信登录异常的原因以及解决方法...
  11. 浅谈用户全生命周期管理
  12. CORBA 架构体系指南(通用对象请求代理体系架构)​
  13. 曙光服务器怎么外接显示器,iPad平板外接显示器教程 | iPad平板怎么外接显示器_什么值得买...
  14. 百趣代谢组学分享:HSFB2b通过促进类黄酮生物合成赋予大豆耐盐能力
  15. 超神学院暗质计算机,超神学院之黑白守护者
  16. 项目管理经典案例收集1
  17. Linux常用环境软件安装(提供对应安装包)
  18. 英国脱欧 光伏人怎么看?
  19. Python的皮肤的使用
  20. 赛迪顾问《2021-2022年中国政务云市场研究年度报告》发布 华云数据跃居行业领军者

热门文章

  1. muti-thread fork
  2. 【Godot 插件】获取编辑器上所有的节点
  3. Chrome插件安装及程序包无效的解决方法
  4. C++ 定时每天十二点做某事
  5. 关于被3个搞物理的“颠覆”了且数学天才陶哲轩“开始压根不相信”的数学常识的算法实现与理解
  6. 如何html5将文字插入图片,如何在文字中加入图片?
  7. 开发软件的步骤是什么
  8. 利用incapsula缓解ddos攻击
  9. 《NVM-Express-1_4-2019.06.10-Ratified》学习笔记(8)
  10. 【论文合集】2022年10月医学影像期刊论文合集