Adapter嵌套Adapter,保持列表中的某个UI状态始终唯一

这么一个需求,就是列表套列表,子列表的个数是有限的;子列表中有个功能是播放音频;
要求:点击其中一个子列表中的某个item的播放按钮,播放按钮UI改变(音频啥的暂时不考虑),然后点击另一个子列表的一个播放按钮,则上一个子列表中的播放按钮(播放->暂停),当前点击的子列表中的那个item的播放按钮(暂停->播放);
在这里插入图片描述

差不多就是这么个意思;

目前想到的解决思路就是:
记录当前点击的item的索引(最外层列表的索引)currentIndex,记录上一次点击的item的索引(最外层列表的索引)lastIndex;然后用一个状态字段status标记当前的播放状态,这个字段放到子列表数据中的每一个bean中,用来更新UI;

每次点击子列表中的某一个item,就判断 一下两次点击的是否是同一个item:

  • 是,在当前子列表中,遍历修改状态值status,用状态值做UI不同显示;
  • 不是,则获取上一次点击的item对应的子数据列表(根据lastIndex),遍历修改所有状态值为false;同时,在当前子列表中,遍历修改状态值status,用状态值做UI不同显示;

以上就是该需求的解决思路;

然后升级一下,目前需求是一个子列表,现在是增加一个;

思路差不多:

每次点击子列表中的某一个item,就判断 一下两次点击的是否是同一个item:

  • 是,判断上一个点击的是子列表1,还是子列表2:
    • 上一个是1,当前是1,就将对应的子列表1的数据status遍历修改
    • 上一个是2,当前是2,就将对应的子列表2的数据status遍历修改
  • 不是,判断上一个点击的是子列表1,还是子列表2:
    • 上一个是1,当前是2,就将对应的子列表1的数据status->false,子列表2的数据遍历修改
    • 上一个是2,当前是1,就将对应的子列表2的数据status->false,子列表1的数据遍历修改
    • 这里如果你的子列表都是数据量少且有限的,则可以不同判断上一次点击的是1还是2,直接两个都遍历一遍,status->false,然后当前子列表的数据遍历修改

假设是3…n个呢,依旧如此,判断点击的是否是同一个item:

  • 是,判断上一个点击的是子列表1,还是子列表2,还是列表3…n:
    • 上一个是1,当前是1,就将对应的子列表1的数据status遍历修改
    • 上一个是2,当前是2,就将对应的子列表2的数据status遍历修改
    • 3…n,…
  • 不是,判断上一个点击的是子列表1,还是子列表2,还是列表3…n:
    • 上一个是1,当前是2,就将对应的子列表1、3…n的数据status->false,子列表2的数据遍历修改
    • 上一个是2,当前是1,就将对应的子列表2…n的数据status->false,子列表1的数据遍历修改
    • 3…n,…
    • 这里如果你的子列表都是数据量少且有限的,则可以不同判断上一次点击的是1还是2还是3…n,直接所有的都遍历一遍(有点上头),status->false,然后当前子列表的数据遍历修改

这个只是临时想出来的方案,应该还不完善,后续再思考一下,有没有更好的做法;


测试用到的代码:https://github.com/xieyang94/TestAdapter

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值