2011-08-01 19 views
1

私はいくつかの画像でグリッドビューを持つアプリケーションをプログラミングしていますが、すべての画像が画面に収まるわけではないので、デフォルトの垂直スクロールを使用しています。とにかく私はスクロールを行い、新しい行が表示されます。新しい行のレンダリングには、遅れがあるようです。android gridview lag on scroll

すべての画像はドロワーブルなので、画像をロードするようなものではありません。少なくとも、明示的ではありません。だから、どのように問題を解決するための任意のアイデア?私のatrixではスクロールが遅れていて、アプリが実行する最終的なデバイスはそれよりはるかに悪いです。

編集 - ここにいくつかのコード:

public View getView(int position, View convertView, ViewGroup parent) { 
    T item = getItem(position); 
    Box box = convertView == null ? new Box(mContext) : (Box) convertView; 
    onBindModel(box, item); 
    return box; 
} 

@Override 
public void onBindModel(Box box, Model item) { 
    box.param.putSerializable("model", item); 
    box.setDescricao(item.getNome()); 
    box.getModelImageView().setImageResource(item.thumbResId); 
} 

編集

が示唆したようにそう、ちょうどこのコードを試してみましたが、それでも同じ結果を得ます:

@Override 
public void onBindModel(final Box box, final Model item) { 
    box.param.putSerializable("model", item); 
    box.setDescricao(item.getNome()); 

    new Thread(){ 
     public void run() { 
      Message msg = new Message(); 
      msg.obj =box.getModelImageView(); 
      msg.arg1 =item.thumbResId; 

      mHandler.sendMessage(msg); 
     } 
    }.start(); 
} 

private Handler mHandler = new Handler() { 
    @Override 
    public void handleMessage(Message message) { 
     Bitmap bm = BitmapFactory.decodeResource(getResources(), message.arg1); 
     setImage((ImageView) message.obj,bm); 
    } 
}; 

public void setImage(ImageView imgView, Bitmap bm) { 
    imgView.setImageBitmap(bm); 
} 

次の行にスクロールすると、ハングアップして正常に続きます。事前に

おかげで

+0

を使用して

Glide.with(context) .load(stickersData[position]) .into(imageView); 

を。これには多くの理由があります。 – Samuel

+0

あなたの問題は解決しましたか?私は同じ問題を抱えています。画像はサーバーからロードされ、別のスレッドでデコードされます。私はUI-THreadでsetImageBitMapを実行しますが、まだ少し遅れています... –

+0

実際には実際にUIデザインを変更してしまいました。いくつかのグリッドを使用して複数のページを作成しました。ページングするとき、私はグリッド全体をスワイプします。しかし、私が実際に編集したコードは、画像をより良い方法で読み込み、activity/fragmentの読み込みをブロックしません。アプリケーションの残りの部分についてハンドラーのアプローチを使用しています。 – RMalke

答えて

1

すべての画像はドロウアブルあるので、それはない、明示的に、少なくとも、画像をロード ような何かによって引き起こされていません。

これは真実ではありません。作業はUIスレッドで行われます。 http://developer.android.com/reference/android/widget/ImageView.html#setImageResource(int)

画像を遅延読み込みすることを検討してください。どこでも広範囲に複数のアプローチが議論されてきた。それのためのGoogle。

0

古い質問が、それはトリックでした:あなたはあなたのコードを投稿することができGlide