为了账号安全,请及时绑定邮箱和手机立即绑定

Android的listview使用之3,绑定网络数据并显示

标签:
Android

先看效果图

5bb820ae0001484d04550840.jpg

前面已经给大家介绍了自定义适配器和异步任务,那么今天就需要结合两个内容来显示网络图片了

先给权限<uses-permission android:name="android.permission.INTERNET"/>

把上次写的异步任务类和httputil类复制过来,然后在适配器中做如下修改

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    convertView = mInflater.inflate(R.layout.my_listview_item, null);//通过mInflater来加载布局
    ImageView iv = (ImageView) convertView.findViewById(R.id.iv);//找到对应的控件
    MyAsyncTask myAsyncTask = new MyAsyncTask(iv);
    myAsyncTask.execute(list.get(position));//拿到集合中的url并开始任务
    return convertView;
}

MainActivity数据修改 

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    lv = (ListView) findViewById(R.id.lv);
    list = new ArrayList<>();//存储对象的集合
    //图片的网址
    String[] urls = {"http://p4.so.qhmsg.com/t018349127914f495ce.jpg"
            , "http://p4.so.qhmsg.com/t01aade72dccf26cffe.jpg"
            , "http://p4.so.qhmsg.com/bdr/_240_/t01b4d668163834560e.jpg"
            , "http://p3.so.qhmsg.com/bdr/_240_/t01f46840e54a54bee3.jpg"
            , "http://p4.so.qhmsg.com/bdr/_240_/t019e2d84e53580b099.jpg"
            , "http://p2.so.qhmsg.com/bdr/_240_/t011b8b18003e6a5e77.jpg"
            , "http://p2.so.qhmsg.com/bdr/_240_/t011e722a8a032aaecc.jpg"
            , "http://p4.so.qhmsg.com/bdr/_240_/t0100fae0e6eb8d624e.jpg"
            , "http://p0.so.qhmsg.com/bdr/_240_/t011cd46113908952c0.jpg"
            , "http://p1.so.qhmsg.com/bdr/_240_/t01a63ec9efb3f5b06b.jpg"};

        for (int i = 0; i < urls.length; i++) {
            list.add(urls[i]);//网址存入集合中
        
    }

    MyAdapter myAdapter = new MyAdapter(this, list);//新建适配器并且传入数据的集合
    lv.setAdapter(myAdapter);//设置适配器
}

这样就可以啦,但是如果数据量多,比如我再循环一百次加载一千条数据

for (int j = 0; j < 100; j++) {
    for (int i = 0; i < urls.length; i++) {
        list.add(urls[i]);//网址存入集合中
    }
}

就会出现新的问题,我们会发现,越往下拉,程序越来越卡,最后直接崩溃掉,看Log日志会发现以下问题  

5bb820af0001f2ae13430494.jpg

就是我们常说的OOM异常(内存溢出),因为我们加载的数据越来越多,内存占用越来越多,最后导致内存装不下这些图片了,程序就奔溃, 

其实我们看到的只有固定个数的内容,没有必要把对象一直存储在内存里面,所以我们可以把已经不再屏幕中的item对象拿过来复用,只需修改数据即可,这就 Listview的优化,下次再给大家介绍。

5bb820af000117d711970437.jpg

原文链接:http://www.apkbus.com/blog-843025-61562.html

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消