android - 如何在数组列表中添加 Volley 图像请求?

标签 android android-volley

我在代码下面有 2 个东西,Volley 请求设置图像,以及 array list adapter 显示静态图像。

我需要帮助在数组列表中添加 Volley 请求,我想要数组列表中显示的 Volley 图像

你能帮我怎么做吗?

(注意我已经有一个 phpscript 用于在 json 中向我发送图像的路径 url)

代码:main_activity

 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  RequestQueue mRequestQueue;

  final String IMAGE_URL =
            "http://developer.android.com/images/training/system-ui.png";
  mNetworkImageView = (NetworkImageView) findViewById(R.id.networkImageView);

//Instantiate the cache
Cache cache = new DiskBasedCache(getCacheDir(), 1024 * 1024); // 1MB cap

//Set up the network to use HttpURLConnection as the HTTP client.
Network network = new BasicNetwork(new HurlStack());

//Instantiate the RequestQueue with the cache and network.
mRequestQueue = new RequestQueue(cache, network);

//Start the queue
mRequestQueue.start();


ImageLoader mImageLoader = new ImageLoader(mRequestQueue, new LruBitmapCache(
            LruBitmapCache.getCacheSize(mContext)));
mNetworkImageView.setImageUrl(IMAGE_URL, mImageLoader);


CustomListAdapter adapter=new CustomListAdapter(this, itemname, imgid);
list=(ListView)findViewById(R.id.list);
list.setAdapter(adapter);

list.setOnItemClickListener(new OnItemClickListener() {

    @Override
    public void onItemClick(AdapterView<?> parent, View view,
            int position, long id) {
        // TODO Auto-generated method stub
        String Slecteditem= itemname[+position];
        Toast.makeText(getApplicationContext(), Slecteditem, Toast.LENGTH_SHORT).show();

    }
});

}

数组列表适配器

包 com.example.p;

import android.app.Activity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;

public class CustomListAdapter extends ArrayAdapter<String> {

    private final Activity context;
    private final String[] itemname;
    private final Integer[] imgid;

    public CustomListAdapter(Activity context, String[] itemname, Integer[] imgid) {
        super(context, R.layout.mylist, itemname);
        // TODO Auto-generated constructor stub

        this.context=context;
        this.itemname=itemname;
        this.imgid=imgid;
    }

    public View getView(int position,View view,ViewGroup parent) {
        LayoutInflater inflater=context.getLayoutInflater();
        View rowView=inflater.inflate(R.layout.mylist, null,true);

        TextView txtTitle = (TextView) rowView.findViewById(R.id.item);
        ImageView imageView = (ImageView) rowView.findViewById(R.id.icon);
        TextView extratxt = (TextView) rowView.findViewById(R.id.textView1);

        txtTitle.setText(itemname[position]);
        imageView.setImageResource(imgid[position]);
        extratxt.setText("Description "+itemname[position]);
        return rowView;

    };
}

和 Lrubitmapcache

package com.example.p;

import android.content.Context;
import android.graphics.Bitmap;
import android.support.v4.util.LruCache;
import android.util.DisplayMetrics;
import com.android.volley.toolbox.ImageLoader.ImageCache;

public class LruBitmapCache extends LruCache<String, Bitmap>
        implements ImageCache {

    public LruBitmapCache(int maxSize) {
        super(maxSize);
    }

    public LruBitmapCache(Context ctx) {
        this(getCacheSize(ctx));
    }

    @Override
    protected int sizeOf(String key, Bitmap value) {
        return value.getRowBytes() * value.getHeight();
    }

    @Override
    public Bitmap getBitmap(String url) {
        return get(url);
    }

    @Override
    public void putBitmap(String url, Bitmap bitmap) {
        put(url, bitmap);
    }

    // Returns a cache size equal to approximately three screens worth of images.
    public static int getCacheSize(Context ctx) {
        final DisplayMetrics displayMetrics = ctx.getResources().
                getDisplayMetrics();
        final int screenWidth = displayMetrics.widthPixels;
        final int screenHeight = displayMetrics.heightPixels;
        // 4 bytes per pixel
        final int screenBytes = screenWidth * screenHeight * 4;

        return screenBytes * 3;
    }
}

最佳答案

我认为出于您的目的,您应该使用 Picasso 或 Glide,而不是 Volley。

Volley 是一个了不起的东西,但是对于带有图像加载的列表,最好使用更具体的图像加载库。

这里是 Glide 和 Picasso 工具的链接:

关于android - 如何在数组列表中添加 Volley 图像请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32100739/

相关文章:

android - Volley JsonObjectRequest Post 参数不再起作用

android - com.android.volley.ServerError 错误 instanceof VolleyError

java - 如何使用 Jsoup 添加新的 html 标签?

java - 如何打开和读取 FIFO

java - google play支付流程认证错误

android - 外部库和 Android list

android - 意外的响应代码 500 URL API Android 应用程序

android - HEAD 请求上的 Volley 内存泄漏

android - Volley.newRequestQueue 导致 OutOfMemoryError

Android Timber 多次记录