在我的应用程序中,我有一个包含一些项目的列表视图。每个项目都有一个img,从远程网址下载。
我使用ImageLoader库将每个图像加载到我的应用程序中。
我的列表视图构建得很好,我有所有的图像,但是我在LogCat中有一个警告:
02-05 15:16:17.938: W/ ImageLoader (17363):尝试初始化已经初始化过的ImageLoader。要使用新的配置重新启动ImageLoader,首先调用ImageLoader.destroy()。
我不知道怎么解决这个问题?
这里是我的适配器的代码:
public class ArticleListAdapterHome extends ArrayAdapter<ArticleHome> {
Typeface faceLight = Typeface.createFromAsset(getContext().getAssets(), "fonts/Roboto-Light.ttf");
Typeface faceBold = Typeface.createFromAsset(getContext().getAssets(), "fonts/Roboto-Bold.ttf");
public ArticleListAdapterHome(Activity activity, List<ArticleHome> articles) {
super(activity, 0, articles);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
Activity activity = (Activity) getContext();
LayoutInflater inflater = activity.getLayoutInflater();
View rowView;
ArticleHome article = getItem(position);
if (position == 0) {
rowView = inflater.inflate(R.layout.item_ligne_home_premier, null);
////////////////////////////////////////////////////////
///// IMAGE
///////////////////////////////////////////////////////
ImageView imgfirst = (ImageView) rowView.findViewById(R.id.imgimg) ;
DisplayImageOptions options = new DisplayImageOptions.Builder()
.cacheInMemory(true)
.cacheOnDisc(true)
.build();
ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(getContext())
.defaultDisplayImageOptions(options)
.threadPriority(Thread.MAX_PRIORITY)
.denyCacheImageMultipleSizesInMemory()
.memoryCacheSize(2 * 1024 * 1024)
.build();
ImageLoader imageLoader = ImageLoader.getInstance();
imageLoader.init(config);
imageLoader.displayImage(article.getImage(), imgfirst);
ListView listV = (ListView)parent;
boolean pauseOnScroll = false; // or true
boolean pauseOnFling = true; // or false
PauseOnScrollListener listener = new PauseOnScrollListener(imageLoader, pauseOnScroll, pauseOnFling);
listV.setOnScrollListener(listener);
////////////////////////////////////////////////////////
///// TITLE
///////////////////////////////////////////////////////
TextView textView = (TextView) rowView.findViewById(R.id.titlepremier);
textView.setText(article.getTitle());
textView.setTypeface(faceLight);
}
else {
rowView = inflater.inflate(R.layout.item_ligne_home, null);
////////////////////////////////////////////////////////
///// IMAGE
///////////////////////////////////////////////////////
ImageView img = (ImageView) rowView.findViewById(R.id.imgimg) ;
DisplayImageOptions options = new DisplayImageOptions.Builder()
.cacheInMemory(true)
.cacheOnDisc(true)
.build();
ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(getContext())
.defaultDisplayImageOptions(options)
.threadPriority(Thread.MAX_PRIORITY)
.denyCacheImageMultipleSizesInMemory()
.memoryCacheSize(2 * 1024 * 1024)
.build();
ImageLoader imageLoader = ImageLoader.getInstance();
imageLoader.init(config);
imageLoader.displayImage(article.getImage(), img);
ListView listV = (ListView)parent;
boolean pauseOnScroll = false; // or true
boolean pauseOnFling = true; // or false
PauseOnScrollListener listener = new PauseOnScrollListener(imageLoader, pauseOnScroll, pauseOnFling);
listV.setOnScrollListener(listener);
////////////////////////////////////////////////////////
///// TITLE
///////////////////////////////////////////////////////
TextView title = (TextView) rowView.findViewById(R.id.titlearticleothers);
title.setText(article.getTitle());
title.setTypeface(faceBold);
////////////////////////////////////////////////////////
///// DESCRIPTION
///////////////////////////////////////////////////////
TextView desc = (TextView) rowView.findViewById(R.id.descriptionarticleothers);
desc.setText(article.getDescription());
desc.setTypeface(faceLight);
////////////////////////////////////////////////////////
///// DATE
///////////////////////////////////////////////////////
TextView date = (TextView) rowView.findViewById(R.id.date);
String pubDate = article.getPubDate();
SimpleDateFormat df = new SimpleDateFormat("EEE, dd MMM yyyy kk:mm:ss Z", Locale.ENGLISH);
Date pDate;
try {
pDate = df.parse(pubDate);
pubDate = DateUtils.getDateDifference(pDate);
pubDate = pubDate.replace("-", "");
} catch (ParseException e) {
Log.e("DATE PARSING", "Error parsing date..");
pubDate = "published by " + article.getAuthor();
}
date.setText("Il y a " +pubDate);
}
return rowView;
} 发布于 2014-06-29 17:13:44
当您尝试初始化ImageLoader时,当它已经初始化时,会发生此错误。
在我的应用程序中,我以两种方式在不同的活动中初始化ImageLoader:
1:
imageLoader.init(ImageLoaderConfiguration.createDefault(this.getSherlockActivity()));2:
initImageLoader(); //where this function contained the configuration settings.在我的应用程序中,我使用了一个ViewPager,它导致了这个错误,这就是为什么:
重要的是要知道,当您在ViewPager中打开一个选项卡时,它会自动加载背景中的第二个选项卡。
假设这个初始化是在第一个选项卡上设置的。因此,当您转到第二个和第三个选项卡时,返回到第二个选项卡,然后加载第一个选项卡,然后再次尝试初始化ImageLoader。
您需要做的是检查它是否已初始化为
if (!imageLoader.isInited()) {
initImageLoader();
}发布于 2014-02-05 14:30:57
ImageLoader只能初始化一次。每次调用getView()方法时都初始化。在从应用程序扩展的类中初始化imageLoder可能更好
public class MyApp extends Application {
public void onCreate() {
super.onCreate();
ContextHolder.context = getApplicationContext();
// Create global configuration and initialize ImageLoader with this configuration
ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(getApplicationContext())
.memoryCache(new UsingFreqLimitedMemoryCache(5 * 1024 * 1024)) // 5 Mb (delete most not used image)
.build();
ImageLoader.getInstance().init(config);
}
}之后你的适配器
public class ArticleListAdapterHome extends ArrayAdapter<ArticleHome> {
Typeface faceLight = Typeface.createFromAsset(getContext().getAssets(), "fonts/Roboto-Light.ttf");
Typeface faceBold = Typeface.createFromAsset(getContext().getAssets(), "fonts/Roboto-Bold.ttf");
private ImageLoader imageLoader;
public ArticleListAdapterHome(Activity activity, List<ArticleHome> articles) {
super(activity, 0, articles);
imageLoader = ImageLoader.getInstance();
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
Activity activity = (Activity) getContext();
LayoutInflater inflater = activity.getLayoutInflater();
View rowView;
ArticleHome article = getItem(position);
if (position == 0) {
rowView = inflater.inflate(R.layout.item_ligne_home_premier, null);
////////////////////////////////////////////////////////
///// IMAGE
///////////////////////////////////////////////////////
ImageView imgfirst = (ImageView) rowView.findViewById(R.id.imgimg) ;
DisplayImageOptions options = new DisplayImageOptions.Builder()
.cacheInMemory(true)
.cacheOnDisc(true)
.build();
imageLoader.displayImage(article.getImage(), imgfirst);
ListView listV = (ListView)parent;
boolean pauseOnScroll = false; // or true
boolean pauseOnFling = true; // or false
PauseOnScrollListener listener = new PauseOnScrollListener(imageLoader, pauseOnScroll, pauseOnFling);
listV.setOnScrollListener(listener);
////////////////////////////////////////////////////////
///// TITLE
///////////////////////////////////////////////////////
TextView textView = (TextView) rowView.findViewById(R.id.titlepremier);
textView.setText(article.getTitle());
textView.setTypeface(faceLight);
}
else {
rowView = inflater.inflate(R.layout.item_ligne_home, null);
////////////////////////////////////////////////////////
///// IMAGE
///////////////////////////////////////////////////////
ImageView img = (ImageView) rowView.findViewById(R.id.imgimg) ;
DisplayImageOptions options = new DisplayImageOptions.Builder()
.cacheInMemory(true)
.cacheOnDisc(true)
.build();
ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(getContext())
.defaultDisplayImageOptions(options)
.threadPriority(Thread.MAX_PRIORITY)
.denyCacheImageMultipleSizesInMemory()
.memoryCacheSize(2 * 1024 * 1024)
.build();
ImageLoader imageLoader = ImageLoader.getInstance();
imageLoader.init(config);
imageLoader.displayImage(article.getImage(), img);
ListView listV = (ListView)parent;
boolean pauseOnScroll = false; // or true
boolean pauseOnFling = true; // or false
PauseOnScrollListener listener = new PauseOnScrollListener(imageLoader, pauseOnScroll, pauseOnFling);
listV.setOnScrollListener(listener);
////////////////////////////////////////////////////////
///// TITLE
///////////////////////////////////////////////////////
TextView title = (TextView) rowView.findViewById(R.id.titlearticleothers);
title.setText(article.getTitle());
title.setTypeface(faceBold);
////////////////////////////////////////////////////////
///// DESCRIPTION
///////////////////////////////////////////////////////
TextView desc = (TextView) rowView.findViewById(R.id.descriptionarticleothers);
desc.setText(article.getDescription());
desc.setTypeface(faceLight);
////////////////////////////////////////////////////////
///// DATE
///////////////////////////////////////////////////////
TextView date = (TextView) rowView.findViewById(R.id.date);
String pubDate = article.getPubDate();
SimpleDateFormat df = new SimpleDateFormat("EEE, dd MMM yyyy kk:mm:ss Z", Locale.ENGLISH);
Date pDate;
try {
pDate = df.parse(pubDate);
pubDate = DateUtils.getDateDifference(pDate);
pubDate = pubDate.replace("-", "");
} catch (ParseException e) {
Log.e("DATE PARSING", "Error parsing date..");
pubDate = "published by " + article.getAuthor();
}
date.setText("Il y a " +pubDate);
}
return rowView;
} 发布于 2014-02-05 15:10:35
你的适配器出问题了。试试看:
public class ArticleListAdapterHome extends ArrayAdapter<ArticleHome> {
private Activity activity;
private static LayoutInflater inflater=null;
public ImageLoader imageLoader;
Typeface faceLight = Typeface.createFromAsset(getContext().getAssets(), "fonts/Roboto-Light.ttf");
Typeface faceBold = Typeface.createFromAsset(getContext().getAssets(), "fonts/Roboto-Bold.ttf");
public ArticleListAdapterHome(Activity activity, List<ArticleHome> articles) {
activity = a;
inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
imageLoader=new ImageLoader(activity.getApplicationContext());
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View rowView;
ArticleHome article = getItem(position);
if (position == 0) {
rowView = inflater.inflate(R.layout.item_ligne_home_premier, null);
////////////////////////////////////////////////////////
///// IMAGE
///////////////////////////////////////////////////////
ImageView imgfirst = (ImageView) rowView.findViewById(R.id.imgimg) ;
imageLoader.displayImage(article.getImage(), imgfirst);
ListView listV = (ListView)parent;
boolean pauseOnScroll = false; // or true
boolean pauseOnFling = true; // or false
PauseOnScrollListener listener = new PauseOnScrollListener(imageLoader, pauseOnScroll, pauseOnFling);
listV.setOnScrollListener(listener);
////////////////////////////////////////////////////////
///// TITLE
///////////////////////////////////////////////////////
TextView textView = (TextView) rowView.findViewById(R.id.titlepremier);
textView.setText(article.getTitle());
textView.setTypeface(faceLight);
}
else {
rowView = inflater.inflate(R.layout.item_ligne_home, null);
////////////////////////////////////////////////////////
///// IMAGE
///////////////////////////////////////////////////////
ImageView img = (ImageView) rowView.findViewById(R.id.imgimg) ;
imageLoader.displayImage(article.getImage(), img);
ListView listV = (ListView)parent;
boolean pauseOnScroll = false; // or true
boolean pauseOnFling = true; // or false
PauseOnScrollListener listener = new PauseOnScrollListener(imageLoader, pauseOnScroll, pauseOnFling);
listV.setOnScrollListener(listener);
////////////////////////////////////////////////////////
///// TITLE
///////////////////////////////////////////////////////
TextView title = (TextView) rowView.findViewById(R.id.titlearticleothers);
title.setText(article.getTitle());
title.setTypeface(faceBold);
////////////////////////////////////////////////////////
///// DESCRIPTION
///////////////////////////////////////////////////////
TextView desc = (TextView) rowView.findViewById(R.id.descriptionarticleothers);
desc.setText(article.getDescription());
desc.setTypeface(faceLight);
////////////////////////////////////////////////////////
///// DATE
///////////////////////////////////////////////////////
TextView date = (TextView) rowView.findViewById(R.id.date);
String pubDate = article.getPubDate();
SimpleDateFormat df = new SimpleDateFormat("EEE, dd MMM yyyy kk:mm:ss Z", Locale.ENGLISH);
Date pDate;
try {
pDate = df.parse(pubDate);
pubDate = DateUtils.getDateDifference(pDate);
pubDate = pubDate.replace("-", "");
} catch (ParseException e) {
Log.e("DATE PARSING", "Error parsing date..");
pubDate = "published by " + article.getAuthor();
}
date.setText("Il y a " +pubDate);
}
return rowView;
}亲爱的用户,您需要参考这个链接:http://www.androidhive.info/2012/02/android-custom-listview-with-image-and-text/检查如何实现自定义适配器。
https://stackoverflow.com/questions/21579826
复制相似问题