0

私はリストビューを使用しており、各アイテムは asynctask クラスを持つサーバーから呼び出された画像を使用しています。

@Override
public View getView(final int position, View convertView, ViewGroup parent) {
        View view = convertView;
        final ViewHolder viewHolder;

        if (view == null) {
            view = getActivity().getLayoutInflater().inflate(R.layout.item_liste, null);
            viewHolder = new ViewHolder();
            viewHolder.image = (ImageView) view.findViewById(R.id.imageView);
            view.setTag(viewHolder);
        } else {
            viewHolder = (ViewHolder) view.getTag();
        }

        if (/* Image not loaded */) {

            /* Create and execute the request using an AsyncTask */
            mRequestManager.getDrawable("0", listItemInformation.resumeBien.Identifiant, new SendBitmap() {

                /* SendBack is called when the bitmap is received from the server */

                @Override
                public void sendBack(Bitmap bitmap) {
                    listItemInformation.drawable.add(bitmap);
                    listItemInformation.drawableCalled = false;
                    viewHolder.image.setImageBitmap(bitmap);
                } 
           });
        } else {
            viewHolder.image.setImageBitmap(listItemInformation.drawable.get(0));
        }

        return view;
    }

問題は、画像を受信したときの ImageView が適切ではないことです。そして、すべての写真がリストビューの最初の項目に読み込まれます..

adapter.notifyDataSetChanged(); を使用しようとしました。

ただし、リストビューのモーションは、スクロール中に呼び出されるとカットされます..

これらの問題を回避するためにどのような可能性がありますか? googleplay のリストビューと同じ結果が欲しいです。

前もって感謝します :)

4

2 に答える 2

2

Volley の NetworkImageView を 1 ~ 2 行で試して、ジョブを完了することができます。

     //Dummy:

    public static class BitmapLruCache extends LruCache<String, Bitmap> implements ImageCache {

    public BitmapLruCache(int maxSize) {
        super(maxSize);
    }


    @Override
    protected int sizeOf(String key, Bitmap value) {
        return value.getRowBytes() * value.getHeight();
    }


    @Override
    public Bitmap getBitmap(String url) {
        return get(url);
    }


    @Override
    public void putBitmap(String url, Bitmap bitmap) {
        put(url, bitmap);
    }
  }

    ImageLoader sImageLoader = new ImageLoader(sRequestQueue, new BitmapLruCache(100));

    networkImageView.setImageUrl(url_to_image, sImageLoader);
于 2013-11-14T16:31:54.827 に答える