私は、ユーザがお気に入りをSQLiteデータベースに追加することを可能にするappを作っています。これは、お気に入りアクティビティに表示されるお気に入りarraylistに情報をロードします。ユーザーが「お気に入りに追加]ボタンを」クリックすると、この関数が実行される:データベースが既存のデータを保持している場合、アクティビティのメソッドを一度だけ呼び出す方法
public void loadFavourites() {
SQLiteDatabase db = dbHelper.getReadableDatabase(); //Get the database from which to read values
//Get columns and create a cursor database query
String[] columns = {"favouriteId", "title", "owner", "url_m", "ownerPic", "description", "dateTaken"};
Cursor cursor = db.query("favourites", columns, null, null, null, null, "favouriteId");
Log.d("FavouritesDB", "" + cursor.getCount()); //Displays cursor count in the logcat
cursor.moveToFirst();
while (!cursor.isAfterLast()) {
favID = cursor.getInt(0);
title = cursor.getString(1);
owner = cursor.getString(2);
url_m = cursor.getString(3);
ownerPic = cursor.getString(4);
description = cursor.getString(5);
date = cursor.getString(6);
ImageInfo favourite = new ImageInfo();
favourite.dateTaken = date;
favourite.description = description;
favourite.ownerPic = ownerPic;
favourite.url_m = url_m;
favourite.owner = owner;
favourite.title = title;
NetworkMgr.getInstance(this).favouritesImageList.add(favourite);
cursor.moveToNext(); // Move to next entry
}
}
これが成功したArrayListのお気に入りに画像を追加し、ユーザーがお気に入りの活動のページを訪れたときにそれを表示します。
ただし、アプリケーションが閉じられて再び開くたびに、お気に入りアクティビティは空になり、loadFavouritesメソッドが呼び出されていないので、データベースに既に追加されているお気に入りは表示されません。
ただし、お気に入りアクティビティonCreate()でloadFavouritesメソッドを呼び出すと、ページが読み込まれるたびにデータベースからのお気に入りがすべてarraylistに再び追加されるため、お気に入りのアイテムが重複して作成されます。
誰かが私のループを修正して、自分のアプリが起動したときに、データベースの既存のお気に入りアイテムだけが追加され、アクティビティが読み込まれるたびにarraylistに再び追加されないように提案できますか?
OMGの1行目に
favouritesarraylist.clear
を追加を呼び出す前に、ArrayListのため)コードの下に働い調整youu感謝! !!! –