package com.example.yjyyj.myapplication; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.Handler; import android.os.Message; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.Adapter; import android.widget.ArrayAdapter; import android.widget.ListView; import java.io.IOException; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import java.util.ArrayList; import java.util.List; public class MainActivity extends AppCompatActivity { private List<bdlogo> bdlist = new ArrayList<>(); private int num = 0; private ListAdapter adapter; private Bitmap bitmap; private String url = "http://www.baidu.com/img/baidu_logo.gif"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); init(); adapter = new ListAdapter(MainActivity.this,R.layout.item,bdlist); ListView listView= (ListView)findViewById(R.id.list); listView.setAdapter(adapter); NetworkOperation(); } final Handler cwjHandler = new Handler(); final Runnable mUpdateResults = new Runnable() { public void run() { updateUI(); } }; protected void NetworkOperation() { Thread t = new Thread() { public void run() { try { Thread.sleep(3000); }catch(Exception e){} adapter.flag=true; for(int i=0;i<16;i++) { bitmap = loadRmoteImage(url); cwjHandler.post(mUpdateResults); } } }; t.start(); } private void updateUI() { if(bitmap!=null){ ini(num,bitmap); num+=2; } adapter.notifyDataSetChanged(); } public void init(){ for(int i =0; i<32;i++){ bdlogo bd = new bdlogo(String.valueOf(i),null); bdlist.add(bd); } } public void ini(int i,Bitmap b){ bdlogo bd = new bdlogo(String.valueOf(i),b); bdlist.set(i,bd); } private Bitmap loadRmoteImage(String imgUrl) { URL fileURL = null; try { fileURL = new URL(imgUrl); } catch (MalformedURLException err) { err.printStackTrace(); } try { HttpURLConnection conn = (HttpURLConnection) fileURL .openConnection(); conn.setDoInput(true); conn.connect(); InputStream is = conn.getInputStream(); int length = (int) conn.getContentLength(); if (length != -1) { byte[] imgData = new byte[length]; byte[] buffer = new byte[512]; int readLen = 0; int destPos = 0; while ((readLen = is.read(buffer)) > 0) { System.arraycopy(buffer, 0, imgData, destPos, readLen); destPos += readLen; Thread.sleep(100); } return BitmapFactory.decodeByteArray(imgData, 0, imgData.length); } } catch (Exception e) { e.printStackTrace(); } return null; } }
listview的主要函数实现
最新推荐文章于 2023-06-11 09:52:07 发布