AQuery (Android Query) Как загрузить изображения на самом деле
В настоящее время я использую библиотеку запросов Android для загрузки изображений с сервера.
ОСНОВНОЙ ПРОБ: я хочу сохранить изображения в первый раз, а затем после того, как я хочу загрузить изображения из кэша. Я видел здесь варианты для управления кэшем с использованием memCache и fileCache, но я не получил, что лучше использовать для медленного подключения к Интернету и минимального использования памяти.
У меня, вероятно, следующее решение с некоторой путаницей:
Прежде всего, я использовал как это:(memCache и fileCache оба true
)
aq.id(holder.prodImage).image(holder.prodImagePath, true, true, 0, R.drawable.no_image, aq.getCachedImage(R.drawable.no_image), AQuery.FADE_IN);
Но здесь он сказал, что if image is huge, avoid memory caching
Но у меня проблема, когда сеть работает медленно, а памяти недостаточно
затем, после того как я попробовал Delay Image Loading:
if(aq.shouldDelay(position, convertView, parent, holder.prodImagePath)){
aq.id(holder.prodImage).image(R.drawable.no_image);
} else {
aq.id(holder.prodImage).progress(view.findViewById(R.id.progressBar1)).image(holder.prodImagePath, false, true, 0, 0, null, AQuery.FADE_IN);
}
Но его бросание NullPointerException
как следующее:
12-10 12:11:26.492: E/AndroidRuntime(23309): java.lang.NullPointerException
12-10 12:11:26.492: E/AndroidRuntime(23309): at com.androidquery.util.Common.shouldDelay(Common.java:328)
12-10 12:11:26.492: E/AndroidRuntime(23309): at com.androidquery.util.Common.shouldDelay(Common.java:340)
12-10 12:11:26.492: E/AndroidRuntime(23309): at com.androidquery.AbstractAQuery.shouldDelay(AbstractAQuery.java:2389)
12-10 12:11:26.492: E/AndroidRuntime(23309): at com.salesman.fragments.ProductFragment$MyGridViewAdapter.getView(ProductFragment.java:423)
12-10 12:11:26.492: E/AndroidRuntime(23309): at android.widget.AbsListView.obtainView(AbsListView.java:2477)
12-10 12:11:26.492: E/AndroidRuntime(23309): at android.widget.GridView.makeAndAddView(GridView.java:1331)
12-10 12:11:26.492: E/AndroidRuntime(23309): at android.widget.GridView.makeRow(GridView.java:331)
12-10 12:11:26.492: E/AndroidRuntime(23309): at android.widget.GridView.fillDown(GridView.java:283)
12-10 12:11:26.492: E/AndroidRuntime(23309): at android.widget.GridView.fillGap(GridView.java:243)
12-10 12:11:26.492: E/AndroidRuntime(23309): at android.widget.AbsListView.trackMotionScroll(AbsListView.java:5549)
12-10 12:11:26.492: E/AndroidRuntime(23309): at android.widget.AbsListView$FlingRunnable.run(AbsListView.java:4693)
что я могу сделать и как я использовал эту библиотеку для этой простой задачи
Пожалуйста, дайте мне решение.
Ваша помощь будет оценена.
1 ответ
Наконец-то получили решение со следующим кодом:
/* Settings of Image */
//set the max number of concurrent network connections, default is 4
AjaxCallback.setNetworkLimit(8);
//set the max number of icons (image width <= 50) to be cached in memory, default is 20
BitmapAjaxCallback.setIconCacheLimit(50);
//set the max number of images (image width > 50) to be cached in memory, default is 20
BitmapAjaxCallback.setCacheLimit(50);
aq = new AQuery(context);
/* Getting Images from Server and stored in cache */
aq.id(holder.prodImageView).progress(convertView.findViewById(R.id.progressBar1)).image(holder.prodImagePath, true, true, 0, R.drawable.no_image, null, AQuery.FADE_IN);
Прокомментируйте здесь, если вы не получили и есть какие-либо проблемы.
Благодарю.