我无法在stackoverflow或谷歌上找到任何有用的答案,关于使用Volley显示多张图片。
这是我显示一张图片的代码:
mainactivity.java
package com.example.zproject;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import com.android.volley.toolbox.ImageLoader;
import com.android.volley.toolbox.NetworkImageView;
public class MainActivity extends ActionBarActivity {
private NetworkImageView mNetworkImageView;
private ImageLoader mImageLoader;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mNetworkImageView = (NetworkImageView) findViewById(R.id.networkImageView);
}
@Override
protected void onStart() {
super.onStart();
// Instantiate the RequestQueue.
mImageLoader = CustomVolleyRequestQueue.getInstance(this.getApplicationContext())
.getImageLoader();
//Image URL - This can point to any image file supported by Android
final String url = "http://goo.gl/0rkaBz";
mImageLoader.get(url, ImageLoader.getImageListener(mNetworkImageView,
R.drawable.add, android.R.drawable.ic_dialog_alert));
mNetworkImageView.setImageUrl(url, mImageLoader);
}
}
凌空骨架
package com.example.zproject;
import android.content.Context;
import android.graphics.Bitmap;
import android.util.LruCache;
import com.android.volley.Cache;
import com.android.volley.Network;
import com.android.volley.RequestQueue;
import com.android.volley.toolbox.BasicNetwork;
import com.android.volley.toolbox.DiskBasedCache;
import com.android.volley.toolbox.HurlStack;
import com.android.volley.toolbox.ImageLoader;
/**
* Custom implementation of Volley Request Queue
*/
public class CustomVolleyRequestQueue {
private static CustomVolleyRequestQueue mInstance;
private static Context mCtx;
private RequestQueue mRequestQueue;
private ImageLoader mImageLoader;
private CustomVolleyRequestQueue(Context context) {
mCtx = context;
mRequestQueue = getRequestQueue();
mImageLoader = new ImageLoader(mRequestQueue,
new ImageLoader.ImageCache() {
private final LruCache<String, Bitmap>
cache = new LruCache<String, Bitmap>(20);
@Override
public Bitmap getBitmap(String url) {
return cache.get(url);
}
@Override
public void putBitmap(String url, Bitmap bitmap) {
cache.put(url, bitmap);
}
});
}
public static synchronized CustomVolleyRequestQueue getInstance(Context context) {
if (mInstance == null) {
mInstance = new CustomVolleyRequestQueue(context);
}
return mInstance;
}
public RequestQueue getRequestQueue() {
if (mRequestQueue == null) {
Cache cache = new DiskBasedCache(mCtx.getCacheDir(), 10 * 1024 * 1024);
Network network = new BasicNetwork(new HurlStack());
mRequestQueue = new RequestQueue(cache, network);
// Don't forget to start the volley request queue
mRequestQueue.start();
}
return mRequestQueue;
}
public ImageLoader getImageLoader() {
return mImageLoader;
}
}
我在此question中遇到问题,因为导入
import com.android.volley.toolbox.MultipartRequest;
import com.android.volley.examples.toolbox.MyVolley;
答案 0 :(得分:1)
您必须单独下载图像,并为每个图像单独请求。
您可能会发现this solution库非常便于图像下载和显示
如果您决定使用Volley
- 同时显示多张图片也没问题。
如果您有Picasso或其他具有一组类似数据的视图,则必须使用适配器。请阅读RecyclerView作为示例。但是,如果您在ImageView
上只有几个layout
次观看,则不需要这样做。