2012-09-16 57 views
1

我是Android開發人員的犧牲品,我試圖在OnCreate期間使用從twitter解析的圖像填充列表視圖。我可以填充列表視圖沒有任何問題,但列表視圖滾動生澀而不是順利。起初我認爲這是一個模擬器問題,但它也在我的設備上生澀。令人沮喪的是,我正在使用viewover方法來推薦所有教程和帖子。任何幫助是極大的讚賞。這是我的代碼...爲什麼我的listview不能順利滾動?

public View getView(int position, View convertView, ViewGroup parent) { 
    View v = convertView; 
    if (v == null) { 
     LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     v = vi.inflate(R.layout.listitem, null); 
      ViewHolder holder = new ViewHolder();   
      holder.username = (TextView) v.findViewById(R.id.username);   
      holder.message = (TextView) v.findViewById(R.id.message); 
      holder.image = (ImageView) v.findViewById(R.id.avatar); 
      v.setTag(holder); 

    } 

    Tweet tweet = tweets.get(position); 
    if (tweet != null) { 
     ViewHolder holder = (ViewHolder)v.getTag(); 
     holder.username = (TextView) v.findViewById(R.id.username); 
     holder.message = (TextView) v.findViewById(R.id.message); 
     holder.image = (ImageView) v.findViewById(R.id.avatar); 

     if (holder.username != null) { 
      holder.username.setText(tweet.username); 
     } 

     if(holder.message != null) { 
      holder.message.setText(tweet.message); 
     } 

     if(holder.image != null) { 
      holder.image.setImageBitmap(getBitmap(tweet.image_url)); 

     } 
    } 
    return v; 
} 
} 

static class ViewHolder { 
     TextView username; 
     TextView message; 
     ImageView image; 
    } 

public Bitmap getBitmap(String bitmapUrl) { 
    try { 
     URL url = new URL(bitmapUrl); 
     return BitmapFactory.decodeStream(url.openConnection() .getInputStream()); 
    } 
    catch(Exception ex) {return null;} 
} 
+0

不getBitmap下載互聯網上的形象? – auselen

+0

你可以發佈你的getBitmap代碼嗎?位圖操作可能非常慢,通常需要異步完成。 – Rob

+0

是的,檢查我的編輯。我添加了方法,以便您可以查看它。 –

回答

3

您的getBitmap方法正在下載和解碼UI線程上的圖像。這將導致在更高版本的android上滾動和崩潰時顯着暫停。

Developer Guide on Bitmap Processing包含用於加載位圖相當容易實現的技術異步