微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

webService异步加载GridView中图片

效果如图:

类ViewCacheForRandom9:

[java]  view plain copy print ?
  1. public class ViewCacheForRandom9 {    
  2.       
  3.     private View baseView;    
  4.     private ImageView sex;    
  5.     private TextView distance;    
  6.     private ImageView imageView;    
  7.   
  8.     public ViewCacheForRandom9(View baseView) {    
  9.         this.baseView = baseView;    
  10.     }    
  11.     public ImageView getSex() {    
  12.         if (sex == null) {    
  13.             sex = (ImageView) baseView.findViewById(R.id.txt_gv_sex);    
  14.         }    
  15.         return sex;    
  16.     }    
  17.     public TextView getdistance() {    
  18.         if (distance == null) {    
  19.             distance = (TextView) baseView.findViewById(R.id.txt_gv_distance);    
  20.         return distance;    
  21.     public ImageView getimageView() {    
  22.         if (imageView == null) {    
  23.             imageView = (ImageView) baseView.findViewById(R.id.img_gv_head);    
  24.         return imageView;    
  25.   
  26. }    


类Random9GridViewAdapter:

public class Random9GridViewAdapter extends ArrayAdapter<NearPeople> {  
  
        private GridView gridView;  
        private AsyncImageLoader asyncImageLoader;  
        public Random9GridViewAdapter(Activity activity,List<NearPeople> near,GridView gridView1) {  
            super(activity,near);  
            this.gridView = gridView1;  
            asyncImageLoader = new AsyncImageLoader();  
        }  
  
        public View getView(int position,View convertView,ViewGroup parent) {  
            Activity activity = (Activity) getContext();  
  
            // Inflate the views from XML  
            View rowView = convertView;  
            ViewCacheForRandom9 viewCache;  
            if (rowView == null) {  
                LayoutInflater inflater = activity.getLayoutInflater();  
                rowView = inflater.inflate(R.layout.griditem,null);  
                viewCache = new ViewCacheForRandom9(rowView);  
                rowView.setTag(viewCache);  
            } else {  
                viewCache = (ViewCacheForRandom9) rowView.getTag();  
            }  
            NearPeople near = getItem(position);  
  
            // Load the image and set it on the ImageView 
            
            String imageUrl = near.getheadUrl();  
            ImageView imageView = viewCache.getimageView();  
            imageView.setTag(imageUrl);  
            Drawable cachedImage = asyncImageLoader.loadDrawable(imageUrl,new ImageCallback() {  
                public void imageLoaded(Drawable imageDrawable,String imageUrl) {  
                    ImageView imageViewByTag = (ImageView) gridView.findViewWithTag(imageUrl);  
                    if (imageViewByTag != null) {  
                        imageViewByTag.setimageDrawable(imageDrawable);  
                    }  
                }  
            });  
            if (cachedImage == null) {  
                imageView.setimageResource(R.drawable.head1);  
            }else{  
           imageView.setimageDrawable(cachedImage);  
            }  
            ImageView sex = viewCache.getSex();  
            if(near.getsex().equals("男"))
      {
       sex.setBackgroundResource(R.drawable.male);
      }
      else
       sex.setBackgroundResource(R.drawable.female);
            // Set the text on the TextView  
            TextView textView = viewCache.getdistance();  
            textView.setText(String.valueOf(near.getdistance()));  
            return rowView;  
        }  
  

真正调用

    //附近的人
         txt_around.setonClickListener(new OnClickListener() {
             public void onClick(View v) {
                 // Todo Auto-generated method stub
                 LinearLayout layout = (LinearLayout) inflater.inflate(
                         R.layout.peoplearound,null).findViewById(R.id.lin_aroundpeople);
                 GridView lv=(GridView)layout.getChildAt(0);
                 SoapObject so= WebServiceUtil.getRandom9PeopleList(spotid);
                 TextView morepeople = (TextView)layout.findViewById(R.id.txt_morepeople);
              morepeople.setonClickListener(new OnClickListener(){

         @Override
         public void onClick(View v) {
          // Todo Auto-generated method stub
          Intent intent1=new Intent(viewMessageActivity.this,PeopleAroundActivity.class);
          viewMessageActivity.this.startActivity(intent1);
         }
               
              });
                try
                 {
                  SoapObject detail = (SoapObject) so.getProperty("getRandom9PeopleList"
              + "Result");
                   Log.v("R",detail.toString());
                  List<NearPeople> list = new ArrayList<NearPeople>();  
                  NearPeople[] n = new NearPeople[detail.getPropertyCount()];
                  for (int i=0;i<detail.getPropertyCount();i++)
                  {
                   n[i] = new NearPeople();
                  }
                 
                  n=parsePeolist(detail);
                  for(int i=0;i<n.length;i++){   
                      list.add(new NearPeople( n[i].getheadUrl(),n[i].getsex(),n[i].getdistance()));  
                  }  
                  lv.setAdapter(new Random9GridViewAdapter(viewMessageActivity.this,list,lv)); 
                 }
                catch(Exception e){
                 
                 Toast.makeText(viewMessageActivity.this,"该景点附近没有游客",Toast.LENGTH_LONG).show(); 
                 morepeople.setText("该景点附近没有游客");
                 morepeople.setClickable(false);
                 
                }
                 lin.removeAllViews();
                 lin.addView(layout);                
              lv.setonItemClickListener(new OnItemClickListener(){

         @Override          public void onItemClick(AdapterView<?> arg0,View arg1,int arg2,           long arg3) {           // Todo Auto-generated method stub           Intent intent = new Intent(viewMessageActivity.this,PeopleInfoActivity.class);           intent.putExtra("peopleid","v10000001");           startActivity(intent);                     }});                                         // TextView morepeople1 = (TextView)findViewById(R.id.txt_more);                morepeople.setonClickListener(new OnClickListener(){                            @Override           public void onClick(View v) {            // Todo Auto-generated method stub            Intent intent1=new Intent(viewMessageActivity.this,PeopleAroundActivity.class);            viewMessageActivity.this.startActivity(intent1);           }                                 });              }          }); 本文转自:http://blog.csdn.net/ristal/article/details/7610639

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐