2014-05-15 1 views
-1

내 목록보기를 스크롤하면 이미지가 위치를 변경합니다. 나는이 문제에 대해 읽었으며 그 이유를 이해하고있다. 하지만 난 내 영어 내 자바에 대한유니버설 이미지 로더가있는 사용자 정의 listView, 내 이미지 섞기

미안 내 문제에 대한 해결책을 발견하지 않았다, 나는 새로운 오전 :(여기

내의 getView입니다 :

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    ViewHolder holder; 
    if (convertView == null) { 
     /****** Inflate tabitem.xml file for each row (Defined below) *******/ 
     convertView = inflater.inflate(R.layout.list_item_layout, null); 
     /****** View Holder Object to contain tabitem.xml file elements ******/ 


     holder = new ViewHolder(); 
     holder.name = (TextView) convertView 
       .findViewById(R.id.bussiness_item_name); 
     holder.phone = (TextView) convertView 
       .findViewById(R.id.bussiness_item_telphone); 
     holder.address = (TextView) convertView 
       .findViewById(R.id.bussiness_item_address) 
     holder.distance = (TextView) convertView 
       .findViewById(R.id.bussiness_item_distance); 
     holder.call = (Button) convertView 
       .findViewById(R.id.bussiness_item_call_button); 
     holder.call.setFocusable(false); 
     holder.nav = (Button) convertView 
       .findViewById(R.id.bussiness_item_nav_button); 
     holder.nav.setFocusable(false); 
     holder.logo = (ImageView)convertView.findViewById(R.id.logo_image); 
     holder.logo.setTag(""+position); 
     holder.logo.setVisibility(View.GONE); 

     /************ Set holder with LayoutInflater ************/ 
     convertView.setTag(holder); 
    } else { 
     holder = (ViewHolder) convertView.getTag(); 
    } 

    Business currentBussiness = getItem(position); 

    if (currentBussiness.getName().contains("null") 
      || currentBussiness.getName().equals("")) { 
     holder.name.setText("---"); 
    } else { 
     holder.name.setText(currentBussiness.getName()); 
    } 

    /************ Set Model values in Holder elements ***********/ 
    if (!currentBussiness.getAddress().contains("null")) { 
     holder.address.setText(currentBussiness.getAddress()); 
    } else { 
     holder.address.setText("---"); 
    } 
    if (!currentBussiness.getMain_phone().contains("null")) { 
     holder.phone.setText(currentBussiness.getMain_phone()); 
    } else { 
     holder.phone.setText("---"); 
    } 

    if (!currentBussiness.getDistanceTo().contains("null") && !currentBussiness.getDistanceTo().equals("-1")) { 
     if(Integer.valueOf(currentBussiness.getDistanceTo()) < 999) 
      holder.distance.setText(currentBussiness.getDistanceTo() + "מטר"); 
     else 
      holder.distance.setText(Integer.valueOf(currentBussiness.getDistanceTo())/1000.0 + "ק\"מ"); 
    } else { 
     holder.distance.setVisibility(View.GONE); 
    } 

    if (currentBussiness.getLogo().contains("null") || currentBussiness.getLogo().equals("")) { 
     ImageLoader.getInstance().displayImage(null, holder.logo); 
     holder.logo.setVisibility(View.GONE); 
    } else { 
     //holder.logo.setImageResource(R.drawable.default1); 
     name = currentBussiness.getLogo(); 
     String root = Environment.getExternalStorageDirectory().toString(); 
     File myDir = new File(root + "/cache"); 

     File file = new File (myDir, name); 
     if (file.exists()){ 

      Log.i("exist", "exsist"); 
      File f = new File(myDir+"/"+currentBussiness.getLogo()); 
      Log.i("","f : "+f); 
      String imageUri = ""+Uri.fromFile(f); 
      Log.i("","uri : "+imageUri); 

      ImageLoader.getInstance().displayImage(imageUri, holder.logo); 
      holder.logo.setVisibility(View.VISIBLE); 
     } 
     else{ 
      ImageLoader.getInstance().displayImage(dir+currentBussiness.getLogo(), holder.logo, new ImageLoadingListener() { 


       @Override 
       public void onLoadingStarted(String imageUri, View view) { 
        // TODO Auto-generated method stub 

       } 

       @Override 
       public void onLoadingFailed(String imageUri, View view, 
         FailReason failReason) { 
        // TODO Auto-generated method stub 

       } 

       @Override 
       public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) { 
        view.setVisibility(View.VISIBLE); 
        saveToSD(loadedImage, name); 
        Log.i("downloaded","downloaded"); 

       } 

       @Override 
       public void onLoadingCancelled(String imageUri, View view) { 
        // TODO Auto-generated method stub 

       } 
      }); 
     } 
    } 



    holder.call.setTag(currentBussiness.getMain_phone()); 
    holder.nav.setTag(currentBussiness.getAddress()); 

    holder.call.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      String posted_by = (String) v.getTag(); 
      String uri = "tel:" + posted_by.trim(); 
      Intent intent = new Intent(Intent.ACTION_CALL); 
      intent.setData(Uri.parse(uri)); 
      mContext.startActivity(intent); 
     } 
    }); 

    holder.nav.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      String address = (String) v.getTag(); 
      Uri location = Uri.parse("geo:0,0?q=" + address); 
      Intent mapIntent = new Intent(Intent.ACTION_VIEW, location); 
      mapIntent.setData(location); 
      mContext.startActivity(mapIntent); 
     } 
    }); 


    return convertView; 

} 
+0

http://stackoverflow.com/questions/16789676/caching-images-and-displaying. UIL의이 예제를 확인하십시오. 이미지는 장소를 변경하지 않습니다. 제 3 자 라이브러리를 사용하지 않고도 이미지를 캐시하고 gridview에 표시하는 예제가 문서에 있습니다. – Raghunandan

답변

-1

는 네 이런 일이 발생 당신이 그것을 다시 스크롤 할 때마다 이미지를로드하려고 할 때마다 .Uiveriverimageloader는 많은 유연성을 가진 무거운 이미지 로더입니다.하지만 이미지를 빠르게로드하려면 이미지를로드하는 데 가장 빠른 라이브러리를 찾았습니다 .. UrlImageViewHelper 사용하기 쉽고 가장 빠른 로더입니다. 적어도 한번 시도하십시오.