用ImageLoader缓存,volley网络请求百度api的图片显示在listview(demo)

用ImageLoader缓存,volley网络请求百度api的图片显示在listview(demo)

首先看看引入的jar包:

然后我们新建一个Myapplication类,为了初始化volley和imageloader:
<span style="font-size:18px;">package com.example.picture;

import com.android.volley.RequestQueue;
import com.android.volley.toolbox.Volley;
import com.nostra13.universalimageloader.cache.disc.naming.Md5FileNameGenerator;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import com.nostra13.universalimageloader.core.assist.QueueProcessingType;

import android.app.Application;
import android.content.Context;

public class MyApplication extends Application {

	public static RequestQueue queues;

	@Override
	public void onCreate() {
		// TODO Auto-generated method stub
		super.onCreate();
		queues = Volley.newRequestQueue(getApplicationContext());
		initImageLoader(this);
	}
	public static void initImageLoader(Context context) {
		// This configuration tuning is custom. You can tune every option, you may tune some of them,
		// or you can create default configuration by
//		  ImageLoaderConfiguration.createDefault(this);
		// method.
		ImageLoaderConfiguration.Builder config = new ImageLoaderConfiguration.Builder(context);
		config.threadPriority(Thread.NORM_PRIORITY - 2);
		config.denyCacheImageMultipleSizesInMemory();//不会在内存中缓存多个大小的图�?
		config.diskCacheFileNameGenerator(new Md5FileNameGenerator());//为了保证图片名称唯一
		config.diskCacheSize(50 * 1024 * 1024); // 50 MiB
		//内存缓存大小默认是:app可用内存�?1/8
				config.tasksProcessingOrder(QueueProcessingType.LIFO);
				config.writeDebugLogs(); // Remove for release app

				// Initialize ImageLoader with configuration.
				ImageLoader.getInstance().init(config.build());
//				ImageLoader.getInstance().init( ImageLoaderConfiguration.createDefault(this));
	}

	public static RequestQueue getHttpQueues() {
		return queues;

	}
}
</span>

然后自己再封装一下volley:
<span style="font-size:18px;">package com.example.picture;

import java.util.HashMap;
import java.util.Map;

import android.content.Context;

import com.android.volley.AuthFailureError;
import com.android.volley.Response.ErrorListener;
import com.android.volley.Response.Listener;
import com.android.volley.toolbox.StringRequest;

public class VolleyRequest {
	public static StringRequest stringRequest;
	public Context context;

	static class MyStringRequest extends StringRequest {
		public Map<String, String> headers = new HashMap<String, String>();

		public MyStringRequest(int method, String url,
				Listener<String> listener, ErrorListener errorListener) {
			super(method, url, listener, errorListener);
			// TODO Auto-generated constructor stub
		}
  //�еķ�����Ҫkey�����������һ��key����
		@Override
		public Map<String, String> getHeaders() throws AuthFailureError {
			// TODO Auto-generated method stub
			return headers;
		}

	}

}
</span>


Mainactivity:
<span style="font-size:18px;">package com.example.picture;

import java.util.ArrayList;
import java.util.List;

import com.android.volley.Request;
import com.android.volley.VolleyError;
import com.android.volley.Response.ErrorListener;
import com.android.volley.Response.Listener;


import com.example.picture.PictBean.javabean;
import com.example.picture.VolleyRequest.MyStringRequest;
import com.google.gson.Gson;
import com.nostra13.universalimageloader.core.ImageLoader;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;

public class MainActivity extends Activity {
	private ListView listview;
	private String url ="http://apis.baidu.com/txapi/mvtp/meinv?num=20";
private List<javabean> list=new ArrayList<javabean>();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        listview=(ListView) findViewById(R.id.listview);
        initdata();
       
    }
	private void initdata() {
		// TODO Auto-generated method stub
		
		MyStringRequest myStringRequest=new MyStringRequest(Request.Method.GET, url, new Listener<String>() {

			@Override
			public void onResponse(String response) {
			
				Gson gson = new Gson();
				PictBean pictbean = gson.fromJson(response, PictBean.class);
				//System.out.println(pictbean.newslist.get(0).title);
				list.addAll(pictbean.newslist);
				 listview.setAdapter(new Myadapter(list));
				System.out.println(list);
				//System.out.println(response);
			}
		}, new ErrorListener() {

			@Override
			public void onErrorResponse(VolleyError error) {
				// TODO Auto-generated method stub
				
			}
		});
		myStringRequest.headers.put("apikey",
				"b175540c4e40810cd78cc3e9fa4d936c");
		MyApplication.getHttpQueues().add(myStringRequest);
		
	}
	class Myadapter extends BaseAdapter{
		List<javabean> list;
		public Myadapter(List<javabean> list) {
			// TODO Auto-generated constructor stub
			this.list=list;
		}

		@Override
		public int getCount() {
			// TODO Auto-generated method stub
			return list.size();
		}

		@Override
		public Object getItem(int position) {
			// TODO Auto-generated method stub
			return list.get(position);
		}

		@Override
		public long getItemId(int position) {
			// TODO Auto-generated method stub
			return position;
		}

		@Override
		public View getView(int position, View convertView, ViewGroup parent) {
			// TODO Auto-generated method stub
			View view;
			if(convertView==null){
				view=View.inflate(getApplicationContext(), R.layout.item_pic, null);
			}else{
				view=convertView;
			}
			TextView tv=(TextView) view.findViewById(R.id.tv);
			ImageView iv=(ImageView) view.findViewById(R.id.iv);
			tv.setText(list.get(position).title);
			ImageLoader.getInstance().displayImage(list.get(position).picUrl, iv,ImageLoaderOptions.pager_options);
			return view;
		}
		
	}
    


   
    
}
</span>

 



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值