小编Ode*_*rik的帖子

最佳实践:使用Room和LiveData运行时过滤器

我正在使用回收器显示Room wrapped DB的内容的屏幕上.适配器从ViewModel获取LiveData,该ViewModel隐藏Room DAO对象上的查询调用.因此,LiveData对象实际上是一个ComputableLiveData对象,它知道Room DB的更改.

现在我想在屏幕上添加过滤器选项.我在何处/如何在Room-LiveData-ViewModel设置中实现此功能?

适配器或ViewModel应该"postfilter"结果在LiveData中吗?我是否应该为每次过滤器更改从房间重新查询数据?我可以重用底层(可计算)LiveData吗?如果没有,我是否真的应该为每个过滤器更改创建新的LiveData?

此处讨论了类似的问题:使用Room,ViewModel和LiveData更改数据后重新加载RecyclerView

android mvvm android-room android-livedata

14
推荐指数
2
解决办法
7133
查看次数

ToolBar MenuItem 中 BadgeDrawable 的 LiveData 更新

我想在工具栏操作上显示徽章。徽章编号由值更新LiveData

这就是我附加徽章的方式:

BadgeUtils.attachBadgeDrawable(inboxBadgeDrawable, toolbar, R.id.menu_inbox);
Run Code Online (Sandbox Code Playgroud)

我尝试了不同的地方进行该调用,包括Activity.onCreateOptionsMenu()Activity.onPrepareOptionsMenu()androidx.lifgecycle.Observer.onChanged()

当任何内容发生变化(工具栏或徽章内容)时,徽章就会错位,向左移动。或者它被复制到另一个动作中。

我想attachBadgeDrawable尝试找到R.id.menu_inbox工具栏内部的容器视图,插入徽章并更新其偏移量。如果菜单项的容器视图发生更改,旧的容器视图仍然具有旧的徽章,并且没有(明智的)方法将其删除。此外,偏移量的应用似乎是堆叠的。

那么,是否还有其他使用BadgeDrawable工具栏操作图标的预期方式?

据我了解,此功能仍处于实验阶段。这个问题会得到解决吗?如果是,大约需要多长时间?(我com.google.android.material:material:1.3.0-beta01现在就用。)

这个问题主要是针对组件的开发人员的,因为使用问题应该根据https://github.com/material-components/material-components-android在这里提出。

编辑:我还在项目的跟踪器上创建了一个问题(功能请求):https ://github.com/material-components/material-components-android/issues/1967

android badge android-toolbar material-components-android

5
推荐指数
1
解决办法
1875
查看次数