2

Я пытаюсь использовать «Universal Image Loader» для загрузки изображений внутри моего ListView. Мой код выглядит следующим образом:«Универсальный загрузчик изображений», теряющий мои параметры ImageView (размер и положение)

public View getView(int position, View convertView, ViewGroup parent) 
if (convertView == null) { 
     convertView = mInflater.inflate(R.layout.offers_list_adapter, null); 

     holder = new ViewHolder(); 
     holder.mIvImage = (ImageView) convertView 
       .findViewById(R.id.ivImage); 
     holder.mTxtName = (TextView) convertView.findViewById(R.id.txtName); 
     holder.mTxtCategoryName = (TextView) convertView 
       .findViewById(R.id.txtCategoryName); 
     convertView.setTag(holder); 
    } else { 
     holder = (ViewHolder) convertView.getTag(); 
    } 

У меня есть одно правило:

Если этот пункт в моем списке особенный, я должен изменить PARAMS моего ImageView в (например, специальный пункт имеет ImageView больше, чем обычно).

Так что в моем коде я это сделать:

if (holder.isSpecial) { 
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(
        LayoutParams.WRAP_CONTENT, 50); 
      layoutParams.gravity = Gravity.CENTER_HORIZONTAL; 
      holder.mIvImage.setLayoutParams(layoutParams); 
} 

После того как я меняю Params, я называю «Универсальный Image Loader» Библиотека как обычно:

imageLoader.displayImage(holder.url, holder.mIvImage); 

Но когда библиотека выполнить в мой поток пользовательского интерфейса, чтобы поместить изображение в мой ImageView, мой ImageView не находится в центре, а размер неправильный. Мои изменения, которые я сделал, потому что этот элемент является особым, не применяются.

У меня есть свой ImageDownloader и когда я использую его нагрузку ImageView с новым Params правильно (центра и нового размером), но и во многих других точках моего собственный класс не так хорошо, как эта библиотека.

Кто-нибудь знает, что может случиться?

Заранее благодарен,

Cheers!


Мой 'Универсальный Image Loader' конфигурация:

DisplayImageOptions options = new DisplayImageOptions.Builder() 
       .cacheInMemory().cacheOnDisc() 
       .imageScaleType(ImageScaleType.IN_SAMPLE_POWER_OF_2) 
       .displayer(new RoundedBitmapDisplayer(0)).build(); 


     ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(
       mContext) 
       .memoryCacheExtraOptions(480, 800) 
       .discCacheExtraOptions(480, 800, CompressFormat.JPEG, 75) 
       .threadPoolSize(3) 
       .threadPriority(Thread.NORM_PRIORITY - 1) 
       .denyCacheImageMultipleSizesInMemory() 
       .offOutOfMemoryHandling() 
       .memoryCache(new UsingFreqLimitedMemoryCache(2 * 1024 * 1024)) 
       .discCache(new UnlimitedDiscCache(file)) 
       .discCacheFileNameGenerator(new HashCodeFileNameGenerator()) 
       .imageDownloader(
         new URLConnectionImageDownloader(5 * 1000, 20 * 1000)) 
       .defaultDisplayImageOptions(DisplayImageOptions.createSimple()) 
       .enableLogging().defaultDisplayImageOptions(options).build(); 

     imageLoader.init(config); 
+0

Почему вы используете '' 'RoundedBitmapDisplayer'''? Вам нужны закругленные углы? – NOSTRA

+0

Это был просто тест, я забыл удалить. Но я не использую это в своем текущем коде. – coutol

+0

Что вы подразумеваете под «использованием собственного ImageDownloader»? Я вижу стандартный '' '.imageDownloader (новый URLConnectionImageDownloader (5 * 1000, 20 * 1000))' ''. – NOSTRA

ответ

3

Вы должны копировать-вставить конфигурацию из GitHub Readme. Этот config (на GitHub) просто показывает ВСЕ возможные варианты, но вы НЕ ДОЛЖНЫ называть их всех.

Вы должны посмотреть пример проекта (UniversalImageLoaderExample), чтобы увидеть правильный способ настройки и использования UIL.