ListView にたくさんのアイテムがあります。各アイテムには、いくつかの編集可能なビューが含まれています。ユーザーがこれらに加えた変更を保存したい。保存が発生するイベントは、アイテムがフォーカスを失ったときです。
私は現在2つの方法を見ています:
View.OnFocusChangeListener() with onFocusChange(View v, boolean hasFocus)
これは機能しますが、各アイテムにはいくつかの編集可能なビューが含まれているため、面倒です。アイテム全体がぼやけている場合は、むしろ保存したいと思います。これまでの単純化の試みには、複雑なものしかありませんでした。
OnItemDeSelectedListener があれば完璧ですが、反対しかありません。
AdapterView.OnItemSelectedListener() with onItemSelected(AdapterView<?> adapterView, View view, int i, long l)
表面上はこれでよさそうです。変数 lastSelectedView を作成するだけなので、最後に選択された (選択解除された) アイテムが何であるかがわかります。問題は、ListView がビューをリサイクルする方法です。アダプターが lastSelectedView をリサイクルせず、含まれるデータを変更したという保証はないと思います。これは合理的な仮定ですか?
OnItemSelectedListener でリサイクル ビューの問題を回避する合理的な方法はありますか?