Ich mache einen Netzwerkanruf in meinem Recycleradapter, um die URL für ein Bild abzurufen. Nachdem die URL empfangen wurde, verwende ich Universal Image Loader, um das Bild in eine Bildansicht zu laden. Das Problem ist, wenn ich nicht scrolle, werden die Bilder an den richtigen Platz geladen, aber sobald ich scrolle, sind die Bilder an der falschen Stelle aufgeblasen. Hier ist mein Adapter:Das Bild wird in die Recycler-Ansicht geladen
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
}
}
ich einen Weg brauchen, um die Bilder in ihren richtigen Stellen zu laden, wenn der Benutzer oder nicht scrollen.
Versuchen Sie ein beliebiges Bild loader-Bibliothek wie Gleitflug zu verwenden, Fresko usw. und auch mit Ihrem viewholder –
möglich doppelte Ihre Bild-URL pflegen: https://stackoverflow.com/questions/26525999/recyclerview-async-image-loading – Anthea
@ ArbazRizvi Ich werde eine andere Bibliothek versuchen und sehen, aber ich verwende derzeit [UIL] (https://github.com/nostra13/Android-Universal-Image-Loader) –