【发布时间】:2018-05-13 04:27:47
【问题描述】:
我在我的回收器适配器中进行网络调用以检索图片的 url。收到 url 后,我使用通用图像加载器将图片加载到图像视图中。问题是当我不滚动图片时,图片被加载到正确的位置,但是一旦我滚动图片就会在错误的地方膨胀。 这是我的适配器:
override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
if (holder is ViewHolder) {
val article = feeds[position]
holder.articleTitle.setFont("SourceSansPro-SemiBold.ttf")
holder.articleDescription.setFont("OpenSans-Regular.ttf")
holder.articleTime.setFont("OpenSans-Light.ttf")
mAnimator?.onBindViewHolder(holder.itemView, position)
holder.apply {
article.apply {
articleTitle.text = title
articleDescription.text = Html.fromHtml(description)
articleTime.text = TimeUtils.convertLongToTime(pubDate)
if (image.isBlank()){
//load picture url when it's empty
mContext?.doAsync {
ImageExtractor.extractImageUrl(link, object : OnImageExtractorListener {
override fun onSuccess(url: String) {
v("imaaaage success $title $url")
mContext?.runOnUiThread {
article.image = url
//use uil to load the image didn't work so I tried just updating the model
//articleImage.displayImage(url)
feeds[position] = article
notifyItemChanged(position)
}
val dbo = context.getDatabase()
dbo.updateArticleImage(dbo,url,article.id)
}
override fun onError() {
}
})
}
}else{
articleImage.displayImage(image)
isRead?.let {
if (isRead!! && !isSaved){
grayScale(holder)
}
}
}
container.setOnClickListener {
itemClick(this)
if (!isSaved){
article.isRead = true
feeds[position] = article
notifyItemChanged(position)
}
}
}
}
}else if (holder is LoadingViewHolder){
holder.progressBar.isIndeterminate = true
}
}
如果用户滚动与否,我需要一种将图像加载到正确位置的方法。
【问题讨论】:
-
尝试使用任何图像加载器库,如 glide、fresco 等,并使用查看器维护您的图像 url
-
@ArbazRizvi 我会尝试另一个库,但我目前正在使用UIL
标签: android kotlin android-recyclerview universal-image-loader