gpt4 book ai didi

java - 需要数组类型;发现: 'java.util.map'

转载 作者:行者123 更新时间:2023-12-02 01:17:47 24 4
gpt4 key购买 nike

我的变量是第一类,例如:

MyClass{
companion Object{
@JvmField val foo = mapOf("a" to "b")
}
}

当我从另一个类调用它时,例如:

setBackgroundColor(Color.parseColor(MyClass.foo["..."]));

出现错误“需要数组类型;发现:'java.util.map '"有什么问题吗?

请注意,如果我在 MyClass 中执行相同的调用,它会完美运行

以下是错误: enter image description here

这是我真正的数组值:

companion object{
@JvmField val darkMode = mapOf(
"bgColor" to "#000000",
"cardColor" to "#262626"
)
}

当我从扩展RecyclerView.ViewHolder的类调用它时,会出现错误 enter image description here

最佳答案

我刚刚尝试过这个:

        val foo = mapOf("a" to "Red")
someView.setBackgroundColor(Color.parseColor(foo["a"]))

它工作得很好,你能分享有关异常的更多详细信息吗?

更新

我尝试完全按照所写的方式使用您的 MyClass,只是我已将 a 的值替换为 Red 而不是您的 b 字符串。

您是否正确使用了parseColor

    /**
* </p>Parse the color string, and return the corresponding color-int.
* If the string cannot be parsed, throws an IllegalArgumentException
* exception. Supported formats are:</p>
*
* <ul>
* <li><code>#RRGGBB</code></li>
* <li><code>#AARRGGBB</code></li>
* </ul>
*
* <p>The following names are also accepted: <code>red</code>, <code>blue</code>,
* <code>green</code>, <code>black</code>, <code>white</code>, <code>gray</code>,
* <code>cyan</code>, <code>magenta</code>, <code>yellow</code>, <code>lightgray</code>,
* <code>darkgray</code>, <code>grey</code>, <code>lightgrey</code>, <code>darkgrey</code>,
* <code>aqua</code>, <code>fuchsia</code>, <code>lime</code>, <code>maroon</code>,
* <code>navy</code>, <code>olive</code>, <code>purple</code>, <code>silver</code>,
* and <code>teal</code>.</p>
*/
@ColorInt
public static int parseColor(@Size(min=1) String colorString) {
if (colorString.charAt(0) == '#') {
// Use a long to avoid rollovers on #ffXXXXXX
long color = Long.parseLong(colorString.substring(1), 16);
if (colorString.length() == 7) {
// Set the alpha value
color |= 0x00000000ff000000;
} else if (colorString.length() != 9) {
throw new IllegalArgumentException("Unknown color");
}
return (int)color;
} else {
Integer color = sColorNameMap.get(colorString.toLowerCase(Locale.ROOT));
if (color != null) {
return color;
}
}
throw new IllegalArgumentException("Unknown color");
}

更新2:

好吧,你说的是“一个扩展RecyclerView.ViewHolder的类”,但是这个类只是RecyclerView类中的一个抽象类,所以它里面没有setBackgroundColor ,除非你正在做类似的事情:

yourViewHolderInstance.itemView.setBackgroundColor

那么你的setBackgroundColor的签名是什么?

它看起来像public void setBackgroundColor(@ColorInt int color) {吗?

我只是为了好玩才将其添加到我的应用程序中:

    override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
(holder as BaseViewHolder).bind(getItem(position))

// For Filippo :)
holder.itemView.setBackgroundColor(Color.parseColor(MyClass.foo["a"]))
}

好吧...现在一切看起来都很红。 :)

更新3

好吧,根据您上次的更新,您是从 Java 调用此函数,因此您无法使用 Kotlin 语法...

这样做:

        final Map<String, String> foo = MyClass.foo;
yourView.setBackgroundColor(Color.parseColor(foo.get("a")));

显然,您可以避免中间分配并执行:

        v.setBackgroundColor(Color.parseColor(MyClass.foo.get("a")));

我通常更喜欢前者,特别是如果您给它所有有意义的名称并且需要调试,但就我而言,没有真正的区别。

关于java - 需要数组类型;发现: 'java.util.map<java.lang.String,java.lang.String>' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58256237/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com