我不知道如何在我的应用程序中以可读格式获取字符串。我的代码是:
val allergyList = recipeItem.allergies
allergyList.joinToString()
var allergyString: String = ""
for (allergy in allergyList) {
allergyList[1]
allergyString += " ${allergy}"
println(allergy.toString())
}
holder.recipeSearchPageAllergies.text = allergyString
当我打印此纸时,我得到了过敏字符串存储空间吗?
每个结果都是这样的:
Allergy@4e8f238
如何将其“解码”为人类可读的内容?它应该说“坚果过敏”。
答案 0 :(得分:0)
您可以使其更简单:
val allergiesStr = recipeItem.allergies.map { allergy ->
// your allergy name from allergy variable
}.joinToString(separator = " ")
答案 1 :(得分:0)
您有一些选择。如果您可以控制Allergy
源代码,
您可以覆盖toString
方法:
class Allergy(val name: String) {
override fun toString(): String = "Allergy[name=${name}]"
}
println(Allergy("flowers"))
// Allergy[name=flowers]
此外,您可以为其创建数据类。数据类默认情况下具有健全的toString
。它还具有一些不错的功能,例如默认情况下equals/hashCode
生成以及对组件的解构,从而使您可以在破坏中使用它:
data class Allergy(val name: String)
println(Allergy("peanuts"))
// Allergy(name=peanuts)
否则,如果您无法修改Allregy
的来源,则可以为此建立扩展方法:
class Allergy(val name: String)
fun Allergy.readable() = "Allergy[name=${name}]"
println(Allergy("cats").readable())
// Allergy[name=cats]
在您的情况下,您还可以为过敏症的收藏建立扩展方法,使其具有所需的格式:
fun Collection<Allergy>.readable() = joinToString { "Allergy[name=${it.name}]" }
println(
listOf(Allergy("cats"), Allergy("peanuts"), Allergy("flowers")).readable()
)
// Allergy[name=cats], Allergy[name=peanuts], Allergy[name=flowers]
// in your case:
holder.recipeSearchPageAllergies.text = recipeItem.allergies.readable()
// or just
holder.recipeSearchPageAllergies.text = recipeItem.allergies.joinToString { "Allergy[name=${it.name}]" }