Я начал использовать Universal Image Loader, но я каким-то образом ошибся. У меня есть listView с изображениями большого пальца, и когда я прокручиваю вниз и все изображения смешиваются, верхнее изображение будет другим, если я прокручу его назад и т. Д.UniversalImageLoader mix up thumb images
Пожалуйста, помогите, я использую 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);
}
}
}
А вот мой ImageLoader инициализационные в моем MainActivity, который работает до запуска адаптера.
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..
Я заметил, что в 'setAdapterData' вы не очищаете' adapterData' перед добавлением к нему, и это общедоступный метод. Вы не можете назвать это где-нибудь, кроме конструктора? Это заполнило бы ваш список дважды. Я не думаю, что это проблема. Просто все, что я вижу прямо сейчас :) –
Я использую его один раз в конструкторе, это проблема tho? –
Нет, должно быть хорошо. Являются ли 'imgUrl' правильными и уникальными? Вот как загрузчик знает, что загрузить. Только что-то, о чем я могу думать, что-то неправильно происходит с популяцией ваших карт. –