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

webService异步加载GridView中图片

效果如图:

类ViewCacheForRandom9:

public class ViewCacheForRandom9 {  
    
    private View baseView;  
    private ImageView sex;  
    private TextView distance;  
    private ImageView imageView;  

    public ViewCacheForRandom9(View baseView) {  
        this.baseView = baseView;  
    }  

    public ImageView getSex() {  
        if (sex == null) {  
        	sex = (ImageView) baseView.findViewById(R.id.txt_gv_sex);  
        }  
        return sex;  
    }  
    public TextView getdistance() {  
        if (distance == null) {  
        	distance = (TextView) baseView.findViewById(R.id.txt_gv_distance);  
        }  
        return distance;  
    }  
    public ImageView getimageView() {  
        if (imageView == null) {  
            imageView = (ImageView) baseView.findViewById(R.id.img_gv_head);  
        }  
        return imageView;  
    }  

}  


类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);           }                                });              }          });

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

相关推荐