2016-08-01 8 views
1

リストビューでは、画像、テキスト、イメージにデフォルトイメージがあり、イメージにはダウンロードボタンがあります。ダウンロードが完了してリストのロードが完了すると、すべて正常に動作しますが、リストビューをスクロールすると、イメージがスタティックイメージに変わりました。リストビュー内のスクロールが更新されたデータを以前のデータに変更したとき

+0

いくつかのコードが参考になる –

+0

http://stackoverflow.com/questions/38567629/listview-change-to-default-when-keyboard-opens 私は共有リンクで自分のコードを追加して、持ってください。それを見てください。 – Nisha

答えて

1

これは、リストビューでビューがリサイクルされるためです。あなたがスクロールするとすぐにディスプレイから外に出てきたビューはリサイクルされ、別の行に再利用され、画像などの混乱につながります。

アダプタでViewHolderパターンを使用する必要がありますこの。すべてのビューをビューホルダーオブジェクトに追加し、それらを使用してイメージ、テキストなどを設定します。これにより、必要な効果が停止します。

は、以下を参照してください。https://dzone.com/articles/optimizing-your-listviewをチュートリアルも

参照のために:Googleからの詳細についてはhttps://developer.android.com/training/improving-layouts/smooth-scrolling.html

注:インターネットから画像をダウンロードする場合は、キャッシュメカニズムが必要か、Picasso、Fresco ...などのライブラリを使用して、正しい画像へのスローコンバージェンスを処理します。

1)あなたがスクロールすると、画像が再度ダウンロード取得するネットワークに行くだろう、この一方で、あなたの静的プレースホルダが表示されます:次のように

私は、ライブラリを示唆していた理由です。画像がダウンロードされるまでには時間がかかります。また、独自のカスタムキャッシュメカニズムを実装しない限り、常にイメージをダウンロードします。

2)スクロールすると、ダウンロードするために生成したスレッドは、ビューが表示外になっても実行を継続します。自分でキャッシングを扱う

3)私が述べた図書館、...あなたのビューは、画面をオフに行くとき、彼らは要求をキャンセル....彼らは自分自身でガベージコレクションを扱う....

+0

私はdonotライブラリを使用したい、私は自分でそれを作成したい。 – Nisha

+0

ビューホルダーパターンを追加しましたが、私の問題は解決しません。 – Nisha

+0

Picassoライブラリをチェックしましたが、イメージが完全にダウンロードされていない限り、デフォルトイメージが表示されます。 しかし、リストビューでダウンロードボタンをクリックすると、whatsappのようなダウンロードが始まります。 – Nisha

0

あなたがスクロールしますあなたのgetViewアダプタクラスのメソッドをリストすると、もう一度起動します。表示する画像がgetViewの方法でダウンロードされたかどうかを毎回確認する必要があります。ダウンロードされていない場合は静的イメージを保持しますが、正常にダウンロードした場合はそのイメージを設定してください。

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
... 

    if ("downloaded") { 
     imageView.setImage("your image"); 
    } else { 
     imageView.setImageResource(R.drawable.static_image); 
    } 
} 
+0

これは動作しません。 – Nisha

関連する問題