Я пытаюсь использовать «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);
Почему вы используете '' 'RoundedBitmapDisplayer'''? Вам нужны закругленные углы? – NOSTRA
Это был просто тест, я забыл удалить. Но я не использую это в своем текущем коде. – coutol
Что вы подразумеваете под «использованием собственного ImageDownloader»? Я вижу стандартный '' '.imageDownloader (новый URLConnectionImageDownloader (5 * 1000, 20 * 1000))' ''. – NOSTRA