//1.首先需要添加ImageLoader依赖搜索Image_Loader然后在注册清单里添加name切记添加MyApp类
public class MainActivity extends AppCompatActivity {private Button btn;private ListView gv;public static final String JSON_URL = "http://fun.51fanli.com/api/taohuasuan/getHotItems/?c_src=5&cids=9000&page=1&size=10";
        Handler hander = new Handler(){public void handleMessage(android.os.Message msg) {showGoodsListView((String)msg.obj);//在gridview中展示商品};};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);btn = (Button) findViewById(R.id.btn1);gv = (ListView) findViewById(R.id.lv);btn.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {new Thread(){public void run() {String rs = new NetWorkUtil().getJsonByGet(JSON_URL);hander.sendMessage(hander.obtainMessage(2, rs));};}.start();}});}public void showGoodsListView(String jsonData){
//      Toast.makeText(mcontext, jsonData, 1).show();Gson g = new Gson();GoodsMarket gm = g.fromJson(jsonData, GoodsMarket.class);ArrayList<Goods> listG = gm.getData().getItems();//得到商品的集合MyBaseAdapter1 adapter = new MyBaseAdapter1(MainActivity.this, listG);gv.setAdapter(adapter);}
}

//网络请求

public class NetWorkUtil {public String getJsonByGet(String jsonUrl){String data = "";try {URL url = null;HttpURLConnection urlConn = null;url = new URL(jsonUrl);urlConn = (HttpURLConnection) url.openConnection();//�õ�HttpsURLConnection��������urlConn.setConnectTimeout(5000);//�����������ʱ��urlConn.setReadTimeout(5000);//���ö�ȡʱ��int responseCode = urlConn.getResponseCode();//�õ���Ӧ��if(responseCode == 200){//200��ʾ��Ӧ�ɹ�InputStream inputStream = urlConn.getInputStream();//������Ӧ�����������byte[] buffer = new byte[1024];int length = 0;while((length=inputStream.read(buffer)) != -1){//˵�����û�ж�ȡ��String str = new String(buffer,0,length);//���ζ�ȡ�������data += str;//�ռ����ۼӣ����}}} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}return data;}}

//ImageLoader

public class MyApp extends Application{@Overridepublic void onCreate() {super.onCreate();ImageLoaderConfiguration configuration = ImageLoaderConfiguration.createDefault(this);ImageLoader.getInstance().init(configuration);}
}

//适配器

public class MyBaseAdapter1 extends BaseAdapter{private Context mcontext;private List<Goods> list;public MyBaseAdapter1(Context mcontext, List<Goods> list) {super();this.mcontext = mcontext;this.list = list;}@Overridepublic int getCount() {// TODO Auto-generated method stubreturn list.size();}@Overridepublic Object getItem(int position) {// TODO Auto-generated method stubreturn null;}@Overridepublic long getItemId(int position) {// TODO Auto-generated method stubreturn 0;}/*控制有几种子布局*/@Overridepublic int getViewTypeCount() {return 2;}/*** 获得当前数据要用到的布局* @param position* @return*/@Overridepublic int getItemViewType(int position) {if(position%2 == 0){//代表第一种布局return 0;}else{return 1;}}@Overridepublic View getView(int position, View convertView, final ViewGroup parent) {ViewHolder1 holder1 = null;ViewHolder2 holder2 = null;int type = getItemViewType(position);//得到当前应该用的布局if(type == 0){//第一种布局if(convertView == null){holder1 = new ViewHolder1();convertView = LayoutInflater.from(mcontext).inflate(R.layout.goods_item_1line, null);holder1.img = (ImageView) convertView.findViewById(R.id.img);holder1.name = (TextView) convertView.findViewById(R.id.name);holder1.tg_price = (TextView) convertView.findViewById(R.id.tg_price);holder1.price = (TextView) convertView.findViewById(R.id.price);holder1.price.getPaint().setFlags(Paint.STRIKE_THRU_TEXT_FLAG);convertView.setTag(holder1);}else{holder1 = (ViewHolder1) convertView.getTag();}//��ֵGoods g = list.get(position);//ȡ����ǰ�е�����holder1.name.setText(g.getName());holder1.tg_price.setText("现价:"+g.getTg_price());holder1.price.setText("原价:"+g.getPrice());//给图片赋值ImageLoader.getInstance().displayImage(g.getImg3() ,holder1.img);}else{//第二种布局if(convertView == null){holder2 = new ViewHolder2();convertView = LayoutInflater.from(mcontext).inflate(R.layout.goods_item_1line2, null);holder2.name = (TextView) convertView.findViewById(R.id.name);holder2.tg_price = (TextView) convertView.findViewById(R.id.tg_price);holder2.price = (TextView) convertView.findViewById(R.id.price);holder2.price.getPaint().setFlags(Paint.STRIKE_THRU_TEXT_FLAG);convertView.setTag(holder2);}else{holder2 = (ViewHolder2) convertView.getTag();}//��ֵGoods g = list.get(position);//ȡ����ǰ�е�����holder2.name.setText(g.getName());holder2.tg_price.setText("现价:"+g.getTg_price());holder2.price.setText("原价:"+g.getPrice());}return convertView;}class ViewHolder1{ImageView img;TextView name;TextView tg_price;TextView price;}class ViewHolder2{TextView name;TextView tg_price;TextView price;}}

ImageLoader多级列表图片加载相关推荐

  1. android图片加载过程,教你写Android ImageLoader框架之图片加载与加载策略

    在教你写Android ImageLoader框架之初始配置与请求调度中,我们已经讲述了ImageLoader的请求配置与调度相关的设计与实现.今天我们就来深入了解图片的具体加载过程以及加载的策略(包 ...

  2. Android图片加载框架比较

    做android的同学肯定都使用过imageloader这款图片加载框架. 图片加载对于中低级的安卓开发人员来说是相当不容易的,因为图片加载时做容易造成安卓内存溢出的原因,而要解决这些问题还需要很多相 ...

  3. 一个方便的图片加载框架——ImageViewEx

    我的博客:http://mrfufufu.github.io/ 一.前言 最近在整理项目中的一些代码,以备即将开展的新项目中使用,刚刚整理到一个图片加载的 lib,用起来非常的简单,和 picasso ...

  4. Android图片加载--妹子图客户端

    图片加载是几乎每个客户端都要用到的功能,这几天闲来无事,以妹子图客户端为例学习了一下android的图片加载.现在整理一下,一来便于自己理解记忆,二来和同样希望学习这方面知识的同学交流,三来贴出自己的 ...

  5. 小程序图片加载失败binderror方法处理

    场景:我们在小程序项目中的一个图片列表,当某些图片加载失败后,直接显示空白,这样用户体验不好,为了解决当图片加载失败,我们给一个默认图片代替,参考官方给的图片加载失败的处理方法:binderror c ...

  6. Android 三大图片加载框架的对比——ImageLoader,Picasso,Glide

    一.ImageLaoder介绍 << Universal ImageLoader 是很早开源的图片缓存,在早期被很多应用使用 多线程下载图片,图片可以来源于网络,文件系统,项目文件夹ass ...

  7. Android 上千张图片的列表滑动加载

    一般项目中图片加载用的比较多的是ImageLoader 但是需求自己配置一些参数 上手有些复杂 对于手机图库中有上千张图片需要加载时 一个使用性能很好的库Glide可以解决 效果图如下 滑动非常流畅 ...

  8. 列表懒加载和图片懒加载

    参考链接整理: element-ui自带的图片懒加载指令和列表懒加载指令 element-ui 图片懒加载 element-ui 列表懒加载 原理和原生js:图片懒加载 如何用原生js实现图片懒加载( ...

  9. Android自定义简单的图片加载器(ImageLoader)

    废话不多述,首先来说明下 为什么要用图片加载器 呢,就是为了避免图片重复从网络加载.也就是在第一次从网络加载之后就把图片缓存在本地,下次用的时候直接从本地查找,有的话就直接用,没有再从网络加载. 加载 ...

最新文章

  1. AMD Ryzen 5000‘Cezanne’APU
  2. FPGA的内部组成结构
  3. @ControllerAdvice这个注解主要作用是什么
  4. 通过NRM随意切换Taobao镜像和NPM官方镜像
  5. 一道头条算法题,一种不为人知的解法!
  6. Swift iOS : Core Data
  7. python mssql get image bin_python 使用pymssql连接sql server数据库
  8. Error creating document instance. Cause: org.xml.sax.SAXParseException; lineNumber: 54; columnNumbe
  9. H5做linux界面开发,如何利用HTML5打造桌面应用?
  10. 本地html导入印象笔记,LocalNote,让你像使用本地文件一样使用印象笔记(支持 markdown 格式)...
  11. Fluentd日志采集使用教程
  12. 如何在微信小程序开发中添加组件?
  13. 计算机c盘小了,电脑C盘空间太小怎么办|电脑中使用分区助手扩大C盘空间的方法...
  14. 在上海创业的日子之注册公司的详细流程
  15. 玩转视频类信息流广告平台,投放技巧及运营思路看这里
  16. eWebEditor编辑器的使用
  17. oracle数据库应用(2)
  18. python创建一个国际象棋棋盘,Jupyter Notebook:实现国际象棋棋盘
  19. STATA闪退,CLDS数据无法转码
  20. FPGA图像处理HLS实现RGB转灰度,提供HLS工程和vivado工程源码

热门文章

  1. 阿里云服务器中挖矿病毒处理方法,centos7
  2. drupal安装教程mysql_Drupal8 安装教程
  3. 数据分析技能点-MySQL表记录的检索
  4. 若干种窗口画面的捕获方法
  5. SpringCloud Gateway + nacos 报错 Service Unavailable
  6. UI设计发展前景怎么样?学后工资待遇如何
  7. SQL 服务没有及时响应启动或控制请求”的解决方法
  8. 基于Python的政府新闻人物网络挖掘(网络、群体与市场)
  9. 【设计模式】工厂方法模式(C#)
  10. wordpress修改css样式的方法,在WordPress中添加自定义CSS代码的几种方法