Fotonick
@Fotonick
android-er (Навальный отменит налоги фрилансерам)

Почему повторяются картинки в listfragment?

Мой listfragment получает необходимую инфу с сервера и потом назначает адаптер списка
setListAdapter(new OneSingerAdapter(RacesFragment.this, allSingersList));


Адаптер грузит картинки так

public class OneSingerAdapter extends BaseAdapter {

    private ArrayList<Object> allSingers;
    private LayoutInflater inflater;

    OneSinger oneSinger;
    Bitmap bmp = null;


    public OneSingerAdapter(RacesFragment racesFragment, ArrayList<Object> allSingers) {
        this.allSingers = allSingers;
        this.inflater = (LayoutInflater) racesFragment.getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }

    @Override
    public int getCount() {
        return allSingers.size();
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public Object getItem(int position) {
        return allSingers.get(position);
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        convertView = inflater.inflate(R.layout.singer_view, parent, false);


        oneSinger = (OneSinger) getItem(position);
        TextView singerName = (TextView) convertView.findViewById(R.id.singerName);
        TextView singerGenres = (TextView) convertView.findViewById(R.id.singerGenres);
        TextView singerAlbunsSongs = (TextView) convertView.findViewById(R.id.singerAlbumsSongs);

        singerName.setText(oneSinger.getSingerName());
        singerGenres.setText(oneSinger.getSingerJanres());

        ImageView singerCover = (ImageView) convertView.findViewById(R.id.singerCover);


        new GetImage((ImageView) convertView.findViewById(R.id.singerCover)).execute();



        singerAlbunsSongs.setText(oneSinger.getSingerAlbums() + " альбомов, " + oneSinger.getSingerTracks() + " песни");

        return convertView;
    }

    private class GetImage extends AsyncTask<Void, Void, Bitmap> {
        ImageView bmImage;

        public GetImage(ImageView bmImage) {
            this.bmImage = bmImage;
        }

        protected Bitmap doInBackground(Void... params) {

            String urldisplay = oneSinger.getSingerPicLinkSmall();
            Bitmap mIcon11 = null;

            try {
                InputStream in = new java.net.URL(urldisplay).openStream();
                mIcon11 = BitmapFactory.decodeStream(in);
            } catch (Exception e) {
                Log.e("Error", e.getMessage());
                e.printStackTrace();
            }
            return mIcon11;
        }

        protected void onPostExecute(Bitmap result) {
           bmImage.setImageBitmap(result);
        }
    }
}


Почему то в итоге получается такая картина

a7634bf2ae6549d7a58196142967b8b1.png

Если пролистывать вниз и обратно то картинки выставляются правильно. Но если резко пролистать вниз или резко вверх, то у нескольких исполнителей будет одна и та же картинка. В чем проблема?
  • Вопрос задан
  • 140 просмотров
Пригласить эксперта
Ответы на вопрос 1
@onepavel
Консультация и разработка мобильных приложений
lucasr.org/2012/04/05/performance-tips-for-android...
square.github.io/picasso
не тянешь ты на `middle android developer`
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы