我正在尝试使用'Universal Image Loader'来加载ListView中的图像。我的代码看起来像这样:
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();
}
我有一条规则:
如果我的列表中的这个项目是特殊的,我必须更改我的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之后,我像往常一样调用'Universal Image Loader'库:
imageLoader.displayImage(holder.url, holder.mIvImage);
但是当库在我的UI线程中执行以将图像放入我的ImageView时,我的ImageView不在中心并且大小错误。 我因为此项目特殊而做出的更改未应用。
我有自己的ImageDownloader,当我使用它时,ImageView加载新的参数正确(中心和新的大小),但在许多其他方面,我自己的类不如这个库好
任何人都知道可能会发生什么?
提前致谢,
干杯!
我的'通用图像加载程序'配置:
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 :(得分:3)
您有来自GitHub自述文件的复制粘贴配置。这个配置(在GitHub上)只显示所有可能的选项,但你不应该调用所有这些选项。
您应该查看示例项目(UniversalImageLoaderExample)以查看调整和使用UIL的正确方法。