为什么我用GridLayoutManager,最后对话在一行

为什么我用GridLayoutManager,最后对话在一行

为什么我用GridLayoutManager接收方和发送方在一行,老师的demo是接收方和发送方不在一行.关键代码是哪个?

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

3回答
irista23 2018-09-25 10:44:14

数据是以list形式展示,并且使用GridLayoutManager设置一行显示两列。

http://img1.sycdn.imooc.com//climg/5ba99fcd0001373207180073.jpg

在自定义Adapter中创建不同的holder。

http://img1.sycdn.imooc.com//climg/5ba99fe20001bd0f05830487.jpg

根据不同的type,设置显示的holder,这样就可以将不同的内容样式同时显示到一个列表中

http://img1.sycdn.imooc.com//climg/5ba99fef00015aaf06570359.jpg

  • 对,这些代码都一样。 其实,最根本问题在于网格布局的设置2列上。 老师,您想:既然两列,同一行,必然两个网格,每个网格要么显示发送方,要么显示接收方。这样一来,发送方,接收方在同一行。
    2018-09-25 16:04:01
  • 既然是两列,就可以一列是发送一列是接收,至于哪列是发送哪列是接收就是靠getType()字段来区分设置显示了
    2018-09-25 16:38:58
  • 确实是两列,老师。但是,显示时候发送和接收在同一行。 我们期望的是:比如,第0个网格显示发送方,第3个网格显示接收方。 而如今,第0个网格显示发送方(在第一列),第1个网格显示发送方(在第二列),致使同一行显示。
    2018-09-25 18:26:05
qq_明天的一轮朝阳_0 2018-09-25 09:15:30

对,我也感觉视频中代码有问题,12条数据,12个网格,不可能分行显示。

好帮手慕雪 2017-09-18 17:31:06

1)两个type是否设置对了。2)发送方与接收方对应的是两个行布局文件,两个holder 。3)两个行布局文件的父控件的宽都是match_parent。4)发送方与接收方的textView一个是左对齐一个是右对齐。5)onBindViewHolder()的强制类型是否正确。再仔细对比一下。

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
Android数据通信开发与应用2018版
  • 参与学习           人
  • 提交作业       147    份
  • 解答问题       687    个

本专题介绍了Android开发核心组件:广播、服务及全局应用。教会你如何使用AIDL、Thread、Socket、蓝牙解决进程线程间通信问题。利用Glide等实现异步加载及NDK原生代码开发。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师