2017-12-22 10 views
1

私は、ユーザがお気に入りを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に再び追加されないように提案できますか?

答えて

1

クリアお気に入りはちょうどloadFavourites() またはloadFavourites(の1行目にfavouritesarraylist.clearを追加loadFavourites()

+0

OMGの1行目にfavouritesarraylist.clearを追加を呼び出す前に、ArrayListのため)コードの下に働い調整youu感謝! !!! –

0

あなたのアプリが起動したら、あなたのDBにアイテムが含まれていないかどうかをチェックする必要があります。あなたのアプリ

SQLiteDatabase db = table.getWritableDatabase(); 
String count = "SELECT count(*) FROM table"; 
Cursor mcursor = db.rawQuery(count, null); 
mcursor.moveToFirst(); 
int icount = mcursor.getInt(0); 
if(icount>0){ 
return; 
} else { 
//populate table 
} 
関連する問題