V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Cybertron
V2EX  ›  Android

如何彻底更改 recyclerview 中的 item 布局中的某个控件的某个属性

  •  
  •   Cybertron · 2016-08-26 01:10:41 +08:00 · 13341 次点击
    这是一个创建于 3015 天前的主题,其中的信息可能已经有所发展或是发生改变。

    标题绕口,见谅。 当外部事件触发后,怎样彻底更改 recyclerview 的 itemview 中的某个控件的某个属性?比如 itemview 中的 edittext ,当外部事件触发后,彻底更改 edittext 的背景。

    目前我的做法是使用 adapter.notifyItemRangeChanged ,然后调用 adapter 内定义的静态方法,设置标志变量为 true ,我在 onCreateViewHolder 中根据标志变量更改 edittext 的背景。

    这种做法有些 bug ,各位有没有更好的方法?

    6 条回复    2016-08-26 21:30:30 +08:00
    ljbha007
        1
    ljbha007  
       2016-08-26 01:41:26 +08:00
    1.获取该 View 的引用
    2.更改属性
    3.notifyItemChanged

    zhaohui318
        2
    zhaohui318  
       2016-08-26 07:55:12 +08:00
    怎样叫彻底,需不需要持久化
    kitalphaj
        3
    kitalphaj  
       2016-08-26 08:10:56 +08:00
    把这个属性放在 Model 里吧。如果你觉得是 UI 属性不属于 Model 那最好的方法就是创建一个中间的 ViewModel 来封装一下咯。如果非要强行变化 UI 属性,就用 1 楼说的方法吧。
    ffts
        4
    ffts  
       2016-08-26 09:00:16 +08:00
    改东西要在 onBindViewHolder 里改吧, create 又不是每次都调用
    F1ReKing
        5
    F1ReKing  
       2016-08-26 14:17:39 +08:00
    应该把属性放在 Model ,然后去更改它并 notifyItemChanged
    Cybertron
        6
    Cybertron  
    OP
       2016-08-26 21:30:30 +08:00
    感谢大家的回复,准备封装进 model 里重新做下,之前正式按照 1 楼的做法实现的。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5838 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 03:25 · PVG 11:25 · LAX 19:25 · JFK 22:25
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.