リストビューでは、画像、テキスト、イメージにデフォルトイメージがあり、イメージにはダウンロードボタンがあります。ダウンロードが完了してリストのロードが完了すると、すべて正常に動作しますが、リストビューをスクロールすると、イメージがスタティックイメージに変わりました。リストビュー内のスクロールが更新されたデータを以前のデータに変更したとき
答えて
これは、リストビューでビューがリサイクルされるためです。あなたがスクロールするとすぐにディスプレイから外に出てきたビューはリサイクルされ、別の行に再利用され、画像などの混乱につながります。
アダプタでViewHolderパターンを使用する必要がありますこの。すべてのビューをビューホルダーオブジェクトに追加し、それらを使用してイメージ、テキストなどを設定します。これにより、必要な効果が停止します。
は、以下を参照してください。https://dzone.com/articles/optimizing-your-listviewをチュートリアルも
参照のために:Googleからの詳細についてはhttps://developer.android.com/training/improving-layouts/smooth-scrolling.html。
注:インターネットから画像をダウンロードする場合は、キャッシュメカニズムが必要か、Picasso、Fresco ...などのライブラリを使用して、正しい画像へのスローコンバージェンスを処理します。
1)あなたがスクロールすると、画像が再度ダウンロード取得するネットワークに行くだろう、この一方で、あなたの静的プレースホルダが表示されます:次のように
私は、ライブラリを示唆していた理由です。画像がダウンロードされるまでには時間がかかります。また、独自のカスタムキャッシュメカニズムを実装しない限り、常にイメージをダウンロードします。
2)スクロールすると、ダウンロードするために生成したスレッドは、ビューが表示外になっても実行を継続します。自分でキャッシングを扱う
3)私が述べた図書館、...あなたのビューは、画面をオフに行くとき、彼らは要求をキャンセル....彼らは自分自身でガベージコレクションを扱う....
あなたがスクロールしますあなたの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);
}
}
これは動作しません。 – Nisha
- 1. データが変更されたときのリストビューの行のハイライト
- 2. データが変更されたときのtelerikチャートの更新
- 3. 変更されたデータを表示し、変更されたデータを更新するための正しいフォームイベント?
- 4. 場所が変更されたときにXMLデータが更新されない
- 5. データが変更されたときにAngular2ビューが更新されない
- 6. ドロップダウン選択が変更されたときにテーブルのデータを更新する
- 7. データが変更されたときに円グラフのデータが更新されない
- 8. バインドされたデータが変更されたときにプロパティを更新しないユーザーコントロールの依存プロパティ
- 9. データが変更されたときにDjangoキャッシュ(Redis)自動更新
- 10. 更新データが変更された場合のみ更新をトリガーする
- 11. データベース内のデータが変更された場合、自動更新ページ
- 12. d3 +バックボーン:データが変更された要素を更新する
- 13. AngularJSでスコープが変更されたときにコントローラ内のデータを更新する
- 14. リストビューの先頭に戻るarrayadapterのデータを更新した後
- 15. 更新DataGridViewのバインドされたデータが編集された後(更新)C#の
- 16. データが変更されるたびに新しいSimpleCursorAdapter?
- 17. データベースフィールドが変更されたときにクライアントにデータをプッシュ
- 18. コンボボックスと親データのバインドをバインドし、2番目の親が変更されたときに更新する
- 19. React Nativeでデータが変更された後にコンポーネントが更新されない
- 20. Vue.js - 2ウェイバインドが機能しません。コンポーネントで変更されたときにデータが更新されない
- 21. 更新チェックボックスのデータが変更さ
- 22. 別のContentProviderのデータが変更されたときのコールバック
- 23. angle:別のコントローラでデータが変更されたときにビューが更新されない
- 24. データが変更されたときにWPF ListBoxでのバインディングがTextBoxを更新しない
- 25. データが変更されたときのコンポーネントの再作成
- 26. データが変更されたときのアクティビティの遷移
- 27. ディレクティブ内でスコープが変更されたときに更新されないビュー
- 28. Excelスプレッドシートでデータが更新されたときに更新された行を表示
- 29. データベースが変更された後にリストビューが更新されない
- 30. AS3データが変更されたときのイベントリスナー?
いくつかのコードが参考になる –
http://stackoverflow.com/questions/38567629/listview-change-to-default-when-keyboard-opens 私は共有リンクで自分のコードを追加して、持ってください。それを見てください。 – Nisha