文章标题android之listview异步加载图片时显示加载进度ProgressBar

这里写代码片
package com.example.listviewitemprogress; 

import java.io.InputStream; 
import java.net.HttpURLConnection; 
import java.net.URL; 

import android.app.Activity; 
import android.content.Context; 
import android.graphics.Bitmap; 
import android.graphics.BitmapFactory; 
import android.os.AsyncTask; 
import android.os.Bundle; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.BaseAdapter; 
import android.widget.Button; 
import android.widget.ImageView; 
import android.widget.ListView; 
import android.widget.ProgressBar; 
import android.widget.TextView; 

/** 
 * @author 小马果 
 * ListView列表项中添加ProgressBar 
 */ 
public class MainActivity extends Activity { 

    private ListView mListView = null ;  
    private static final String imgUrl = "http://www.qq510.net/uploads/allimg/100613/2_100613171230_5.jpg"; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.activity_main); 
        init(); 
    } 


    private void init(){ 
        mListView =  (ListView)findViewById(R.id.listview); 
        mListView.setAdapter(new MyListViewAdapter(this)); 
    } 

    private class MyListViewAdapter extends BaseAdapter{ 

        private LayoutInflater inflater = null;  

        public MyListViewAdapter(Context con){ 
            inflater = (LayoutInflater)con.getSystemService(LAYOUT_INFLATER_SERVICE); 
        } 
        @Override 
        public int getCount() { 
            // TODO Auto-generated method stub 
            return Integer.MAX_VALUE; 
        } 

        @Override 
        public Object getItem(int arg0) { 
            // TODO Auto-generated method stub 
            return arg0; 
        } 

        @Override 
        public long getItemId(int position) { 
            // TODO Auto-generated method stub 
            return position; 
        } 

        @Override 
        public View getView(int position, View convertView, ViewGroup parent) { 
            // TODO Auto-generated method stub 
            ViewHolder mHolder = new ViewHolder() ; 
            if(convertView == null){ 
                convertView = inflater.inflate(R.layout.list_item, null); 
                mHolder.iv = (ImageView)(convertView.findViewById(R.id.iv)); 
                mHolder.mBtn = (Button)(convertView.findViewById(R.id.button)); 
                mHolder.pb = (ProgressBar)(convertView.findViewById(R.id.progressBar1)); 
                mHolder.tv = (TextView)(convertView.findViewById(R.id.textView1)); 
                convertView.setTag(mHolder); 
            }else{ 
                mHolder = (ViewHolder)convertView.getTag(); 
            } 

            new AsyncTask<ViewHolder, Void, Bitmap>() { 
                private ViewHolder v; 

                @Override 
                protected Bitmap doInBackground(ViewHolder... params) { 
                    v = params[0]; 
                    return  BitmapFactory.decodeStream(getStreamFromURL(imgUrl)); 
                } 

                @Override 
                protected void onPostExecute(Bitmap result) { 
                    super.onPostExecute(result); 
                        v.pb.setVisibility(View.GONE); 
                        v.mBtn.setVisibility(View.VISIBLE); 
                        v.iv.setImageBitmap(result); 
                } 
            }.execute(mHolder); 
            return convertView; 
        } 

    } 

    static class ViewHolder{ 
        ImageView iv = null ;  
        Button mBtn = null ; 
        ProgressBar pb = null ;  
        TextView tv = null ;  
    } 


    static String length; 
    public static InputStream getStreamFromURL(String imageURL) { 
        InputStream in=null; 
        try { 
            URL url=new URL(imageURL); 
            HttpURLConnection connection=(HttpURLConnection) url.openConnection(); 
//          connection.setRequestProperty("Connection", "Keep-Alive");//维持长连接 
            connection.setConnectTimeout(6* 1000);//设置连接超时 
            if (connection.getResponseCode() != 200) throw new RuntimeException("请求失败"); 
             length = connection.getHeaderField("Content-Length"); 
            in=connection.getInputStream(); 

        } catch (Exception e) { 
            // TODO Auto-generated catch block 
            e.printStackTrace(); 
        } 
        return in; 

    } 


} 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 

    <ListView 
        android:id="@+id/listview" 
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent" 
        android:drawSelectorOnTop="false"  
        android:choiceMode="none" 
        android:focusable="false"  
        android:scrollingCache="false" 
        android:fadingEdge="none"  
        android:focusableInTouchMode="false" 
        android:clickable="false"  
        android:dividerHeight="0.5dip" /> 

</RelativeLayout> 

ListView列表控件Item布局: 

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="110dp"  
    android:background="#00ffeeaa" 
    > 

    <ImageView  
        android:id="@+id/iv" 
        android:layout_width="110dp" 
        android:background="@drawable/ic_action_search" 
        android:layout_height="110dp"  
        android:contentDescription="@string/hello_world"/> 

    <Button 
        android:id="@+id/button" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_alignParentRight="true" 
        android:layout_centerVertical="true" 
        android:text="@string/xiaomaguo"/> 

    <ProgressBar 
        android:id="@+id/progressBar1" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_alignParentLeft="true" 
        android:layout_centerVertical="true" 
        android:layout_alignTop="@+id/button" 
        android:layout_marginLeft="29dp" /> 

    <TextView 
        android:id="@+id/textView1" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_alignBaseline="@+id/button" 
        android:layout_alignBottom="@+id/button" 
        android:layout_centerVertical="true" 
        android:layout_toLeftOf="@+id/button" 
        android:text="@string/cool" /> 

</RelativeLayout> 

引用块内容http://mzh3344258.blog.51cto.com/1823534/995321

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值