XListeView和Imageloader的使用
2017-04-26 18:43
106 查看
package com.example.myapplication;
import android.app.ProgressDialog;
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import com.example.myapplication.bean.MenuInfo;
import com.example.myapplication.utils.StreamTools;
import com.google.gson.Gson;
import com.limxing.xlistview.view.XListView;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.util.List;
public class MainActivity extends AppCompatActivity implements XListView.IXListViewListener {
}
————-适配器———————-
package com.example.myapplication;
import android.content.Context;
import android.graphics.Bitmap;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import com.example.myapplication.bean.MenuInfo;
import com.example.myapplication.utils.ImageLoaderAsyncTask;
import com.nostra13.universalimageloader.core.ImageLoader;
import java.util.List;
public class MyBaseAdapter extends BaseAdapter {
}
———————ImageLoader———————-
package com.example.myapplication;
import android.app.Application;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
public class MyApplication extends Application {
}
—————–工具类——————-
package com.example.myapplication.utils;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
public class StreamTools {
}
——————–不使用Imageloader的读取图片——————
package com.example.myapplication.utils;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.AsyncTask;
import com.nostra13.universalimageloader.core.ImageLoader;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
public class ImageLoaderAsyncTask extends AsyncTask
import android.app.ProgressDialog;
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import com.example.myapplication.bean.MenuInfo;
import com.example.myapplication.utils.StreamTools;
import com.google.gson.Gson;
import com.limxing.xlistview.view.XListView;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.util.List;
public class MainActivity extends AppCompatActivity implements XListView.IXListViewListener {
private XListView lv; private ProgressDialog dialog; private int pageIndex = 1; private MyBaseAdapter adapter; //是否上拉 private boolean isLoadMore = true; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); lv = (XListView) findViewById(R.id.lv); //设置是否允许上拉加载更多 lv.setPullLoadEnable(true); lv.setXListViewListener(this); //设置适配器 getData("http://apis.juhe.cn/cook/query.php?menu="+ URLEncoder.encode("秘制红烧肉")+"&key="+ URLEncoder.encode("a7a42220c5c1c5268be7ba25af764f6c")+"&pn="+pageIndex); } //这是请求菜谱信息操作 private void getData(String path){ new AsyncTask<String,Void,String >(){ @Override protected void onPreExecute() { super.onPreExecute(); //执行加载进度框 dialog = new ProgressDialog(MainActivity.this); dialog.setMessage("玩命加载中..."); dialog.show(); } @Override protected void onPostExecute(String s) { super.onPostExecute(s); //隐藏进度条 dialog.dismiss(); if(s != null){ Gson gson = new Gson(); MenuInfo menuInfo = gson.fromJson(s,MenuInfo.class); //设置数据 if(adapter == null) { adapter = new MyBaseAdapter(MainActivity.this, menuInfo.getResult(). getData()); lv.setAdapter(adapter); }else{ adapter.loadMore(menuInfo.getResult().getData(),isLoadMore); //刷新适配器 adapter.notifyDataSetChanged(); } } } @Override protected String doInBackground(String... params) { try { String path = params[0]; URL url = new URL(path); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("GET"); connection.setConnectTimeout(5*1000); connection.setReadTimeout(5*1000); //与服务器建立连接 connection.connect(); //服务器响应 int code = connection.getResponseCode(); if(code == 200){ InputStream is = connection.getInputStream(); String str = StreamTools.readFromeNetWork(is); return str; } } catch (Exception e) { e.printStackTrace(); } return null; } }.execute(path); } @Override public void onRefresh() { //执行网络请求 isLoadMore = false; ++pageIndex; getData("http://apis.juhe.cn/cook/query.php?menu="+ URLEncoder.encode("秘制红烧肉")+"&key="+ URLEncoder.encode("a7a42220c5c1c5268be7ba25af764f6c")+"&pn="+pageIndex); //停止刷新 lv.stopRefresh(true); } @Override public void onLoadMore() { isLoadMore = true; ++pageIndex; getData("http://apis.juhe.cn/cook/query.php?menu="+ URLEncoder.encode("秘制红烧肉")+"&key="+ URLEncoder.encode("a7a42220c5c1c5268be7ba25af764f6c")+"&pn="+pageIndex); //停止显示上拉的V lv.stopLoadMore(); }
}
————-适配器———————-
package com.example.myapplication;
import android.content.Context;
import android.graphics.Bitmap;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import com.example.myapplication.bean.MenuInfo;
import com.example.myapplication.utils.ImageLoaderAsyncTask;
import com.nostra13.universalimageloader.core.ImageLoader;
import java.util.List;
public class MyBaseAdapter extends BaseAdapter {
private static final String TAG = "MyBaseAdapter"; private Context context; private List<MenuInfo.ResultBean.DataBean> list; public MyBaseAdapter(Context context, List<MenuInfo.ResultBean.DataBean> list) { this.context = context; this.list = list; } @Override public int getCount() { return list != null ? list.size() : 0; } @Override public Object getItem(int position) { return null; } @Override public long getItemId(int position) { return 0; } /** * 加载更多 */ public void loadMore(List<MenuInfo.ResultBean.DataBean> lists,boolean isLast) { for (MenuInfo.ResultBean.DataBean dataBean : lists) { if(isLast) { //添加数据 list.add(dataBean); }else{ //添加到最前面 list.add(0,dataBean); } } } @Override public View getView(int position, View convertView, ViewGroup parent) { if (convertView == null) { convertView = convertView.inflate(context, R.layout.item, null); } ImageView ivIcon = (ImageView) convertView.findViewById(R.id.ivIcon); TextView tvContent = (TextView) convertView.findViewById(R.id.tvContent); tvContent.setText(list.get(position).getTags()); ///ImageLoader.getInstance().displayImage(list.get(position).getAlbums().get(0),ivIcon); loadImage(list.get(position).getAlbums().get(0), ivIcon); return convertView; } private void loadImage(String url, final ImageView ivIcon) { new ImageLoaderAsyncTask(new ImageLoaderAsyncTask.ImageCallBack() { @Override public void callBack(Bitmap bitmap) { if (bitmap != null) { ivIcon.setImageBitmap(bitmap); } else { Log.e(TAG, "callBack : 加载失败"); } } }).execute(url); }
}
———————ImageLoader———————-
package com.example.myapplication;
import android.app.Application;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
public class MyApplication extends Application {
@Override public void onCreate() { super.onCreate(); ImageLoaderConfiguration configuration = ImageLoaderConfiguration.createDefault(this); ImageLoader.getInstance().init(configuration); }
}
—————–工具类——————-
package com.example.myapplication.utils;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
public class StreamTools {
public static String readFromeNetWork(InputStream is){ try { ByteArrayOutputStream baos = new ByteArrayOutputStream(); byte[] buffer = new byte[1024]; int len = 0; while ((len = is.read(buffer)) != -1){ baos.write(buffer,0,len); } //关闭流 is.close(); return baos.toString(); } catch (Exception e) { e.printStackTrace(); } return null; }
}
——————–不使用Imageloader的读取图片——————
package com.example.myapplication.utils;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.AsyncTask;
import com.nostra13.universalimageloader.core.ImageLoader;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
public class ImageLoaderAsyncTask extends AsyncTask
相关文章推荐
- Android ImageLoader使用
- 使用ImageLoader实现图片异步加载
- 使用ImageLoader实现图片异步加载
- ImageLoader使用 步骤
- 【光速使用开源框架系列】图片加载框架ImageLoader
- ImageLoader 基本介绍及使用
- 使用Imageloader异步加载网络图片
- university-imageloader使用遇到的异常及解决方法
- ImageLoader的使用
- 【开源项目1】使用ImageLoader实现图片异步加载
- 开源框架ImageLoader的使用
- 使用ImageLoader实现图片异步加载
- Android菜鸟学习笔记(ImageLoader使用前需初始化异常)
- 安卓代码优化 使用ImageLoader实现图片异步加载
- 使用ImageLoader实现图片异步加载
- 关于使用ImageLoader出现的Bitmap too large to be uploaded into a texture
- 使用ImageLoader实现图片异步加载
- 使用ImageLoader实现图片异步加载
- 使用ImageLoader
- android 使用imageloader 获取图片时,如果需要带cookie