模仿微信,实现会话置顶折叠功能

本文探讨了在Android应用中实现类似微信会话置顶折叠的功能。介绍了两种方案,一是即时数据更新刷新界面,二是利用LoaderManager更新。面临的问题包括获取置顶会话数量、控制置顶布局的显示与隐藏以及滚动位置处理。提出了在数据刷新后查询置顶数量并动态插入虚拟数据的解决方案,并详细说明了各个问题的处理方法。测试结果显示方案有效,但存在两次界面刷新的潜在问题。
摘要由CSDN通过智能技术生成

【代码编写中,待完善】

简介

微信的会话置顶折叠,看上去,挺不错的,产品要求也搞一个。

方案一:采用即时数据更新,刷新界面

方案二:

首页更新流程:
在这里插入图片描述

使用 LoaderManager 更新缺点:
1、会话数量未知(包括置顶会话)
2、数据和cursor挂钩,插入数据,需要修改db

故,整个流程,对外没有可操作的空间。
目前,要做到置顶折叠,需要查询到置顶的会话数量,然后在数据库中,插入一条虚拟数据,最后,刷新界面。而且,点击置顶,需要更改查询的sql。

目前需要解决的问题:
1、置顶的会话数量
2、显示和隐藏置顶布局的时机
3、隐藏后,需要滚动到的位置

置顶的会话数量,如何处理,
方法一,在查询sql前,查询db的置顶数量,但是 LoaderManager 没有提供时机。
方法二,在查询结果中,添加item,但是adapter,是通过cursor处理的,没办法操作。
方法三,在查询刷新后,查询置顶数量,然后插入一条虚拟数据,最后,在重新更新界面。

方案
问题一:置顶的会话数量
采用方案:在刷新以后,查询置顶数量,修改虚拟数据,然后,如果置顶数据变更,在重新刷新ui。
方案缺点:用户置顶会话变化,在临界点的时候,需要更新界面以后,在刷新ui,重新更新一次界面。存在2次刷新的问题。

问题二:显示和隐藏置顶布局的时机
通过onScroll进行处理

问题三:隐藏后,需要滚动到的位置
通过
ListView.smoothScrollToPositionFromTop
,计算距离,进行滚动。
仅仅对隐藏的状态,进行处理,显示置顶,是增加数量,不需要处理。

修改后置顶流程
在这里插入图片描述

测试效果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值