カスタム BaseAdapter で ListActivity を使用しています。実装されたclear()
メソッドはリストのみをクリアしますonResume()
が、アダプターを再設定してデータが変更されたことを通知すると、リストはクリアされたままになります。
コードは必要ないと思いますが...
ArrayList<String> thisWorks = DatabaseMethods.retrieveData();
populateAdapter();
---------------------------
ArrayList<String> thisAddsSameDataWithEveryIntentCall = sortByDate(DatabaseMethods.retrieveData());
populateAdapter();
私の理解では、メモリアドレスの変更に関係している可能性が最も高いです。ただし、SQLite が提供するデータは順序どおりではなく、連続した日付が必要なため、毎回並べ替える必要があります。
データをソートすることで、毎回異なるメモリアドレスを使用しているのに対し、アクティビティを再開すると、古いアドレスを検索していると思います。
アクティビティを呼び出すときにデータの重複を防ぐためのヒントは?
編集
上記の ArrayList thisWorks には、次のデータが含まれます。
- 2013/09/01
- 2012/08/22
- 2012/07/26
このアクティビティを呼び出すと、これらの項目が CustomAdapter に取り込まれます。アクティビティが呼び出されると、データベース関数が再度呼び出され (ユーザーがデータを追加した可能性があるため)、変更されない場合は、同じリストを使用して CustomAdapter を設定します....すべて問題ありません
上記の ArrayList thisAddsSameDataWithEveryIntentCall には、ソート前に次のデータが含まれます。
- 2013/09/01
- 2012/08/22
- 2012/07/26
並べ替え後:
- 2012/07/26
- 2012/08/22
- 2013/09/01
このアクティビティを呼び出すと、これらのアイテムは CustomAdapter に最初に正常に設定されます。戻るボタンを押して、Activity をスタックから削除します。ボタンをクリックしてアクティビティを再度呼び出します。
- 2012/07/26
- 2012/08/22
- 2013/09/01
- 2012/07/26
- 2012/08/22
- 2013/09/01
重複。
何かが破壊されていません。日付の選択肢を選択した後、少し変更したバージョンのリストを使用します。今回はデータを並べ替えていないため、データの重複はありません。