亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

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下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消