[英]Android - ImageLoader must be init with configuration before using in UIL
[英]Android - Universal ImageLoader error must be init with configuration before using
錯誤:
java.lang.IllegalStateException: ImageLoader 必須在使用前用配置初始化
我正在努力以將 gridview 放入片段的方法來顯示圖像。 PostListAdapter 在那里我調用 UniversalImageLoader:
public class ViewHolder extends RecyclerView.ViewHolder{
ImageView mPostImage;
public ViewHolder(View itemView) {
super(itemView);
mPostImage = (ImageView) itemView.findViewById(R.id.post_image1);
int gridWidth = mContext.getResources().getDisplayMetrics().widthPixels;
int imageWidth = gridWidth/NUM_GRID_COLUMNS;
mPostImage.setMaxHeight(imageWidth);
mPostImage.setMaxWidth(imageWidth);
}
}
public PostListAdapter(Context context, ArrayList<Post> posts) {
mPosts = posts;
mContext = context;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(mContext).inflate(R.layout.layout_view_post, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
UniversalImageLoader.setImage(mPosts.get(position).getImage(), holder.mPostImage);
}
@Override
public int getItemCount() {
return mPosts.size();
}
我調用 PostAdapter 的片段(方法):
private void setupPostsList(){
GridLayoutManager gridLayoutManager = new GridLayoutManager(getActivity(), NUM_GRID_COLUMNS);
mRecyclerView.setLayoutManager(gridLayoutManager);
mAdapter = new PostListAdapter(getActivity(), mPosts);
mRecyclerView.setAdapter(mAdapter);
}
這是 UniversalImageLoader 類:
public class UniversalImageLoader
private static final int defaultImage = R.drawable.ic_launcher_background;
private Context mContext;
public UniversalImageLoader(Context context) {
mContext = context;
}
public ImageLoaderConfiguration getConfig(){
DisplayImageOptions defaultOptions = new DisplayImageOptions.Builder()
.showImageOnLoading(defaultImage)
.showImageForEmptyUri(defaultImage)
.showImageOnFail(defaultImage)
.considerExifParams(true)
.cacheOnDisk(true).cacheInMemory(true)
.cacheOnDisk(true).resetViewBeforeLoading(true)
.imageScaleType(ImageScaleType.EXACTLY)
.displayer(new FadeInBitmapDisplayer(300)).build();
ImageLoaderConfiguration configuration = new ImageLoaderConfiguration.Builder(mContext)
.defaultDisplayImageOptions(defaultOptions)
.memoryCache(new WeakMemoryCache())
.diskCacheSize(100 * 1024 * 1024).build();
return configuration;
}
public static void setImage(String imgURL, ImageView image){
ImageLoader imageLoader = ImageLoader.getInstance();
imageLoader.displayImage(imgURL, image);
}
日志貓:
java.lang.IllegalStateException: ImageLoader must be init with configuration before using
at com.test.test.test.util.UniversalImageLoader.setImage(UniversalImageLoader.java:54)
at com.test.test.test.util.PostListAdapter.onBindViewHolder(PostListAdapter.java:59)
at com.test.test.test.util.PostListAdapter.onBindViewHolder(PostListAdapter.java:23)
您需要在使用displayImage()
之前調用init(conf)
方法。
您沒有使用getConfig()
方法,因此您應該添加 UniversalImageLoader 構造函數imageLoader.init(ImageLoaderConfiguration.createDefault(getConfig()));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.