问题描述
我从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,textView.lineHeight,textView.lineHeight)
// Set image span to the first letter
val span: ImageSpan? = drawable?.let { ImageSpan(it,ImageSpan.ALIGN_BASELINE) }
myData.setSpan(span,1,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)
}
textView.text = myData
}
override fun onCancelled(error: DatabaseError) {
}
}
database.addValueEventListener(getData)
解决方法
问题出在 {
"name": "equality-mh","version": "0.0.0","scripts": {
"ng": "ng","lint": "ng lint","e2e": "ng e2e","test": "echo \"Error: no test specified\" && exit 1","tsc": "tsc -p src -w","start": "live-server --open=src","build-prod": "node --max_old_space_size=5048 ./node_modules/@angular/cli/bin/ng build --prod","build-prod-aot": "node --max_old_space_size=5048 ./node_modules/@angular/cli/bin/ng build --prod --aot --build-optimizer --configuration=production"
},"private": true,"dependencies": {
"@angular/animations": "^8.2.0","@angular/cdk": "^8.1.2","@angular/common": "~8.2.0","@angular/compiler": "~8.2.0","@angular/core": "~8.2.0","@angular/flex-layout": "^8.0.0-beta.26","@angular/forms": "~8.2.0","@angular/material": "^8.1.2","@angular/platform-browser": "~8.2.0","@angular/platform-browser-dynamic": "~8.2.0","@angular/router": "~8.2.0","@ng-select/ng-select": "^3.7.0","@ngx-translate/core": "^11.0.1","@ngx-translate/http-loader": "^4.0.0","@nicky-lenaers/ngx-scroll-to": "^3.0.1","adyen-api-js": "^1.30.4","angular-6-social-login": "^1.1.1","angular-google-charts": "^0.1.6","angular-morris-js": "^1.1.0","angular-tinymce": "^6.0.0","angular2-image-zoom": "^1.2.1","angular2-masonry": "^0.4.0","angular2-notifications": "^2.0.0","chart.js": "^2.9.3","classlist.js": "^1.1.20150312","html2canvas": "^1.0.0-rc.5","http": "0.0.0","imagesloaded": "^4.1.4","jquery": "^3.4.1","jw-angular-social-buttons": "^1.0.0","ng-lazyload-image": "^7.0.1","ng2-charts": "^2.3.0","ng6-file-upload": "^1.1.0","ngx-bootstrap": "^5.1.1","ngx-editor": "^4.1.0","ngx-emoji-picker": "0.0.2","ngx-facebook": "^2.4.0","ngx-image-cropper": "^2.0.2","ngx-infinite-scroll": "^8.0.1","ngx-mat-select-search": "^2.1.1","ngx-skeleton-loader": "^1.2.6","ngx-slick": "^0.2.1","primeicons": "^2.0.0","primeng": "^8.0.2","quill": "^1.3.6","rxjs": "^6.5.2","rxjs-compat": "^6.5.2","socket.io-client": "^2.3.0","stripe-angular": "^1.1.0","swiper": "^5.2.0","tinymce": "^5.0.14","ts-md5": "^1.2.4","tslib": "^1.10.0","web-animations-js": "^2.3.2","zone.js": "~0.9.1"
},"devDependencies": {
"@angular-devkit/build-angular": "~0.803.29","@angular/cli": "~8.3.29","@angular/compiler-cli": "~8.2.0","@angular/http": "^7.2.15","@angular/language-service": "~8.2.0","@types/jasmine": "~3.3.8","@types/jasminewd2": "~2.0.3","@types/node": "~8.9.4","codelyzer": "^5.0.0","jasmine-core": "~3.4.0","jasmine-spec-reporter": "~4.2.1","karma": "~4.1.0","karma-chrome-launcher": "~2.2.0","karma-coverage-istanbul-reporter": "~2.0.1","karma-jasmine": "~2.0.1","karma-jasmine-html-reporter": "^1.4.0","protractor": "~5.4.0","ts-node": "~7.0.0","tslint": "~5.15.0","typescript": "~3.5.3","webpack-cli": "^3.3.12"
}
}
。
您始终将图像跨度设置为整个字符串的第一个。做这样的事情:
myData.setSpan(span,1,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)