Android关于一个页面双列表内嵌gridview单选问题

来源:互联网 发布:玩具出租软件 编辑:程序博客网 时间:2024/06/05 20:08

Android关于一个页面双列表内嵌gridview单选问题

最近公司移动应用开发的时候,公司提出一个需求:一个Activity中左右两边各一个列表,每个列表的item中要现实两列数据也就是内嵌的GridView,然后实现整个页面的单选以及左右两个列表上下拖动以及左右滑动菜单功能。关于左右两边列表的上下拖动以及左右滑动菜单功能,我用的自定义RecyclerView,还是比较好实现的,如果有需要的,可以直接百度,看看别人的库研究下,自己写个自己常用的自定义View。说下如此页面的单选问题。使用方法1:比较粗暴直接。首先获取整个页面数据后,遍历左右两边列表数据,使用map集合或者list集合记录每个item中Gredview每项的初始状态,然后adapter刷新数据。在处理每个内嵌GridView的item点击时,更改所有list集合值,设置其中的选中标识,然后adapter刷新。但是在测试过程共,由于数据量大,整个页面刷新一次需要5s左右,神啊,就单选择一次等3秒才有效果,这是找骂的节奏。好吧,想办法改进下:1 每次先改变选中状态再去记录单选位置,这种测试过后,能稍微好点,但还是卡的不要不要的。接着来 2 不再使用list集合记录所有item状态了,只需要定义 三个变量 int type 用来区分左右两边列表int groupPosition 用来记录当前点击时RecyclerView的positionint childPosition 用来记录RecyclerView中GridView的item的position好了 修改完成,代码少了好多,没有了之前的不停遍历list(真累)。这个修改后发现,只改了当前item的状态,变成多选了,杯具啊。ok 再新增一个变量 List<ViewHolder> 用来存储每个GridView item的Holder,每做一次选择 只在holder中设置相应状态就行,因为是单选,那就只设置list中最后一个即可,其它状态修改为位选中状态即可。ok 基本上满足需求了。以上修改后,单选情况,真正实时选中了,无延迟。至于文章中,RecyclerView 的性能优化,后面在总结吧。其实关于上面的问题,还想到一种,只刷新GridView应该可以,但没时间测试了,只给了3小时(项目明天展示,希望公司顺利,没我啥事了,赶紧休息),已经弄的欲仙欲死了,晚上才抽空记录下自己想法,以便后续改进。ps 第一次写,希望自己以后能养成记录的好习惯!努力!
阅读全文
0 0
原创粉丝点击