java - SpannableStringBuilder不会显示Firebase(Kotlin)中每个数据的图像范围

标签 java android kotlin stringbuilder spannablestring

我从FireBase检索数据,并尝试在每个数据(TextView)旁边显示图像。但是图像仅显示在第一个数据上。
这是输出:

我希望每个数据都有一个图像。
这是我的代码:

val database = FirebaseDatabase.getInstance().reference

val getData = object : ValueEventListener {
     override fun onDataChange(snapshot: DataSnapshot) {
     
          val myData = SpannableStringBuilder()

          for (i in snapshot.children) {
               val data = i.child("myData").value

               myData.append("$data\n\n")
               
               // Get image from drawable and set size
               val drawable: Drawable? = context?.let { ContextCompat.getDrawable(it, R.drawable.myImage) }
               drawable?.setBounds(0, 0, textView.lineHeight, textView.lineHeight)
               
               // Set image span to the first letter
               val span: ImageSpan? = drawable?.let { ImageSpan(it, ImageSpan.ALIGN_BASELINE) }
               myData.setSpan(span, 0, 1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)
          }

          textView.text = myData
     }

     override fun onCancelled(error: DatabaseError) {

     }
}

database.addValueEventListener(getData)

最佳答案

问题出在myData.setSpan(span, 0, 1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)上。
您始终将图像跨度设置为整个字符串的第一个。做这样的事情:

override fun onDataChange(snapshot: DataSnapshot) {

    val builder = SpannableStringBuilder()

    snapshot.children.forEach { data ->
        builder.append("$data#") // the `#` doesn't mind and will be replaced with the image span

        val span = context?.let {
            ImageSpan(it, R.drawable.myImage, DynamicDrawableSpan.ALIGN_BASELINE)
        }

        builder.setSpan(
            span,
            builder.length - 1,
            builder.length,
            Spanned.SPAN_EXCLUSIVE_EXCLUSIVE
        )

        builder.append("\n\n") // at the end, append new lines
    }
    
    textView.text = builder
}

关于java - SpannableStringBuilder不会显示Firebase(Kotlin)中每个数据的图像范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63788533/

相关文章:

c# - db4o:严重的问题和不连贯

android - 需要创建类似控件的电子表格,我应该扩展 ListView 或 GridView 什么?

php - 来自 jQuery 或 JavaScript 的 XMLRPC 调用

java - Android 应用程序中的 slider

java - Json Java : retrieve attributes with particular value

java - 一个类如何继承 Object 类和另一个显式父类(super class)?

kotlin - 带有重置的惰性变量

java - 使用 Android Assets zip 文件时出现 FileNotFound 异常

java - JQuery + JAVA 中的长轮询?

java - 网络安全配置 : Using Network Security Config from resource network_security_config debugBuild: true