私はいくつかの画像でグリッドビューを持つアプリケーションをプログラミングしていますが、すべての画像が画面に収まるわけではないので、デフォルトの垂直スクロールを使用しています。とにかく私はスクロールを行い、新しい行が表示されます。新しい行のレンダリングには、遅れがあるようです。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);
}
次の行にスクロールすると、ハングアップして正常に続きます。事前に
おかげで
を使用して
を。これには多くの理由があります。 – Samuel
あなたの問題は解決しましたか?私は同じ問題を抱えています。画像はサーバーからロードされ、別のスレッドでデコードされます。私はUI-THreadでsetImageBitMapを実行しますが、まだ少し遅れています... –
実際には実際にUIデザインを変更してしまいました。いくつかのグリッドを使用して複数のページを作成しました。ページングするとき、私はグリッド全体をスワイプします。しかし、私が実際に編集したコードは、画像をより良い方法で読み込み、activity/fragmentの読み込みをブロックしません。アプリケーションの残りの部分についてハンドラーのアプローチを使用しています。 – RMalke