2014-03-30 3 views
1

드로어 블에 약 300 개의 이미지가 있고이를 목록보기에 표시해야하지만 스크롤 속도가 너무 느립니다. 오프라인 응용 프로그램의 lazyLoading을 사용할 수있는 방법이 있습니까?드로어 블에서 이미지를로드하는 동안 스크롤 속도가 느려짐

여기 내 getView 메소드입니다. 이미지를 표시하지 않으면 listview가 정상적으로 스크롤됩니다.

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    // TODO Auto-generated method stub 
    View vi = convertView; 
    ViewHolder holder; 

    if(convertView==null){ 

     /****** Inflate tabitem.xml file for each row (Defined below) *******/ 
     vi = inflater.inflate(R.layout.pos_list_item, null); 

     /****** View Holder Object to contain tabitem.xml file elements ******/ 

     holder = new ViewHolder(); 
     holder.text = (TextView) vi.findViewById(R.id.textView1); 
     holder.text1=(TextView)vi.findViewById(R.id.textView2); 
     holder.image=(ImageView)vi.findViewById(R.id.imageView1); 


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

    if(data.size()<=0) 
    { 
     holder.text.setText("No Data"); 

    } 
    else 
    { 
     /***** Get each Model object from Arraylist ********/ 
     tempValues=null; 
     tempValues = (DataStructureList) data.get(position); 

     /************ Set Model values in Holder elements ***********/ 

     holder.text.setText(tempValues.getPosName()); 
     holder.text1.setText(tempValues.getCatName()); 

     int resourceId1 = res.getIdentifier(tempValues.getPosImage()+"1", "drawable",  activity.getPackageName()); 
     holder.image.setImageResource(resourceId1); 

     /******** Set Item Click Listner for LayoutInflater for each row *******/ 

    } 
    return vi; 
}' 
+0

안녕하세요 @PratikB URL을 가져올 필요가 없습니다. 이미 모든 이미지가 drawable-hdpi 폴더에 있습니다. 하지만 일단 전체 목록이로드되면 부드럽게 스크롤되지 않습니다. – user1878067

+0

내 실수, 일부 코드 게시, 재활용 된보기를 올바르게 사용 했습니까? –

답변

0

:

  1. setImageResource()이 UI에 비트 맵 읽기 및 디코딩을 수행을 스레드가 발생하여 대기 시간 딸꾹질이 발생할 수 있습니다. 그게 걱정된다면 setImageDrawable (android.graphics.drawable.Drawable) 또는 setImageBitmap (android.graphics.Bitmap) 및 BitmapFactory를 대신 사용해보십시오.

  2. 이미지의 크기와 해상도가 느린 스크롤의 원인 일 수 있으므로 큰 이미지의 축소판 이미지를 만들어 사용하십시오.

  3. 전체 데이터를로드하는 대신 페이지 매김을 사용해보십시오.

1
setImageResource (int resId) this runs on UI thread which may slow the UI. 

사용이 코드에서 느린 스크롤에 대한 몇 가지 요인이 될 수

setImageDrawable(<drawable>); 
관련 문제