Всем доброго времени суток. Вывожу список постов через RecyclerView, и при быстром скроле вниз или вверх, миниатюры постов путаются между собой.
т.е. у первого поста одна картинка, у последнего другая, и при быстром скроле, они могут меняться местами.
Я в этом новичек, может проблема и бональная, но я не нашел решение на страницах гугла.
Вот адаптер:
package pro.shever.storage_t.posts;
/**
* Created by Anton on 13.01.2018.
*/
//import android.support.v7.widget.CardView;
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import com.squareup.picasso.Picasso;
import java.util.List;
import pro.shever.storage_t.R;
public class RVAdapter extends RecyclerView.Adapter<RVAdapter.PostsViewHolder> {
Context context;
public static class PostsViewHolder extends RecyclerView.ViewHolder {
// CardView cv;
TextView postsName;
TextView postsText;
ImageView postsImage;
PostsViewHolder(View itemView) {
super(itemView);
// cv = (CardView)itemView.findViewById(R.id.cv);
postsName = (TextView)itemView.findViewById(R.id.name);
postsText = (TextView)itemView.findViewById(R.id.text);
postsImage = (ImageView)itemView.findViewById(R.id.image);
}
}
List<Posts> posts;
RVAdapter(List<Posts> posts){
this.posts = posts;
}
@Override
public void onAttachedToRecyclerView(RecyclerView recyclerView) {
super.onAttachedToRecyclerView(recyclerView);
}
@Override
public PostsViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.post_item, viewGroup, false);
PostsViewHolder pvh = new PostsViewHolder(v);
return pvh;
}
@Override
public void onBindViewHolder(PostsViewHolder postsViewHolder, int i) {
postsViewHolder.postsName.setText(posts.get(i).name);
postsViewHolder.postsText.setText(posts.get(i).text);
Picasso.with(this.context).load(posts.get(i).image).into(postsViewHolder.postsImage);
}
@Override
public int getItemCount() {
return posts.size();
}
}
В ReciclerView элементы пере используются, перемещаясь в в пул объектов RecycledViewPool. Пока picasso не загрузит новое изображение - в элементе используется предыдущее изображение. Попробуйте сбрасывать загрузку изображения Picasso.with(this.context).cancelRequest(PostsViewHolder.postsImage).load... Так по идее должен сначала появиться placeholder, а потом начнется загрузка нового изображения
Спасибо за помощь, нашел ошибку. Передавал не тот context в Picaso. было:
Picasso.with(this.context)...
надо:
Picasso.with(postsViewHolder.postsImage.getContext())...
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Когда я пишу текст в EditText(multiline) - проподают кнопки ,но после окончания писания кнопки снова появляются
Делаю парсинг с помощью JsoupЕсть блоки сайта, из которых нужн вытащить данные
Добрый деньВот начинаем старые проекты переносить на новые технологии и выбераем технолонический стэк
Есть некая БД в которой лежат комнаты и мне надо выбрать комнаты подходящие по условиям фильтраВ классе Filter поля по которым ведётся сравнение