0

Universal Image Loader を使い始めたのですが、なぜかエラーになってしまいました。サムネイル画像付きのlistViewを取得しました.上下にスクロールすると、すべての画像が混ざり合っています.スクロールして戻ると、一番上の画像が別の画像になります..

助けてください、私はviewHolderを使用しています、それは問題を解決すると思いますが、いいえ。

これが私のアダプターです:

public class CouponAdapter extends BaseAdapter {

public List<HashMap<String, String>> adapterData = new ArrayList<HashMap<String, String>>();

Context context;
LayoutInflater inflater;
ImageLoader imageLoader;

public CouponAdapter(Context context, List<HashMap<String, String>> data, int resource) {

    imageLoader = ImageLoader.getInstance();
    inflater = LayoutInflater.from(context);
    setAdapterData(data);
    this.context = context;

}

@Override
public View getView(int position, View convertView, ViewGroup parent) {

    ViewHolder viewHolder;

    if (convertView == null) {

        convertView = inflater.inflate(R.layout.kupon_list_item, null);

        viewHolder = new ViewHolder();
        viewHolder.titleTv = (TextView) convertView.findViewById(R.id.cpTitle);
        viewHolder.imgView = (ImageView) convertView.findViewById(R.id.kuponImageView);

        convertView.setTag(viewHolder);

    } else {
        viewHolder = (ViewHolder) convertView.getTag();
    }

    HashMap<String, String> map = adapterData.get(position);
    viewHolder.titleTv.setText(map.get("coupon_title"));

    String imgUrl = Variables.baseURL + Variables.kuponAlapKepUrl + map.get("img");
    imageLoader.displayImage(imgUrl, viewHolder.imgView);

    return convertView;
}

static class ViewHolder {

    public TextView titleTv;
    public ImageView imgView;
    public String imgUrl;

}

@Override
public int getCount() {

    if (adapterData != null) {
        return adapterData.size();
    } else {
        return 0;
    }

}

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

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

public void setAdapterData(List<HashMap<String, String>> data) {

    for (int i = 0; i < data.size(); i++) {
        HashMap<String, String> map = data.get(i);
        this.adapterData.add(map);
    }
}

}

そして、アダプターが実行される前に実行される MainActivity での ImageLoader の初期化を次に示します。

public class MainActivity extends AlapSlidingActivity{



public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);



    DisplayImageOptions displayimageOptions = new DisplayImageOptions.Builder()
            .cacheInMemory().cacheOnDisc().build();


    ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(
            getApplicationContext()).defaultDisplayImageOptions(
            displayimageOptions).build();
    ImageLoader.getInstance().init(config);


//............................... more code here..
4

1 に答える 1

0

ダウンロードした画像をストレージ SD カードにキャッシュしてから、画像リストビューまたはグリッドビューにバインドする必要があります。

于 2014-10-10T22:33:42.240 に答える