小编Sil*_*yte的帖子

视图绑定:有没有办法在给定布局 id 的情况下对布局进行泛型膨胀?

通过数据绑定,我们有一个 DataBindingUtil 类,它有一个可以处理任何布局 id 的 inflate 方法:

binding = DataBindingUtil.inflate<ViewDataBinding>(inflater, layoutId, parent, false)
Run Code Online (Sandbox Code Playgroud)

对于视图绑定,似乎没有 ViewBindingUtil 类。Inflate 方法旨在在具体绑定类型上调用。但是如果您事先不知道具体的绑定类型怎么办?一种解决方案是在 layoutId 上运行 when 语句:

binding = when (layoutId) {
    R.id.layout1 -> Layout1Binding.inflate(...)
    R.id.layout2 -> Layout2Binding.inflate(...)
    R.id.layout3 -> Layout3Binding.inflate(...)
    etc...
}
Run Code Online (Sandbox Code Playgroud)

但与单行数据绑定相比,这是很多代码。有没有更好的办法?我找到了这个 3rd 方库,但它看起来像使用反射:https : //github.com/matsudamper/ViewBindingUtil

android android-databinding android-viewbinding

12
推荐指数
0
解决办法
419
查看次数

首选项库版本28在每个首选项的左侧创建巨大的填充

我从第27版到第28版更新了com.android.support:preference库,自从我这样做以来,每个首选项左侧都有大量的填充.它几乎就像假设那里会有图标,但我没有指定图标.见下面的截图.有没有办法摆脱这种填充?

首选项屏幕布局

android android-layout

6
推荐指数
1
解决办法
390
查看次数

MongoDB 是否支持 Map 对象?

假设我在 node.js 应用程序中有一个有序项目的 Map:

var myMap = new Map();
myMap.set("a", "b");
myMap.set("c", "d");
myMap.set("e", "f");
Run Code Online (Sandbox Code Playgroud)

然后我使用 MongoDB node.js 驱动程序将此地图存储在数据库中:

collection.insertOne({myMap: myMap});
Run Code Online (Sandbox Code Playgroud)

存储的地图如下所示:

{ "myMap" : { "a" : "b", "c" : "d", "e" : "f" } }
Run Code Online (Sandbox Code Playgroud)

我知道 Map 的顺序是有保证的,但它是否保证按该顺序存储在 MongoDB 中?是否保证按该顺序从 MongoDB 读取?

这是一个非常简单的问题,但我在 MongoDB 文档中找不到任何关于它支持 Maps 的内容。

javascript dictionary mongodb node.js

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

为什么这个BindingAdapter在Kotlin中不起作用?

我有一个ViewModel:

val imageUrl = ObservableField<String>()
Run Code Online (Sandbox Code Playgroud)

我的布局XML有:

<ImageView
    ...
    app:url="@{viewModel.imageUrl}"
    .../>
Run Code Online (Sandbox Code Playgroud)

我有一个顶级函数的BindingAdapters文件:

@BindingAdapter("url")
fun loadImage(view: ImageView, url: String?) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

data binding error msg:Cannot find the setter for attribute 'app:url' with parameter type android.databinding.ObservableField<java.lang.String> on android.widget.ImageView.
Run Code Online (Sandbox Code Playgroud)

知道为什么会这样吗?这与我在Java中设置绑定适配器的方式完全相同,减去了静态函数.

android kotlin android-binding-adapter

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