0

カスタム 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

重複。

何かが破壊されていません。日付の選択肢を選択した後、少し変更したバージョンのリストを使用します。今回はデータを並べ替えていないため、データの重複はありません。

4

0 に答える 0