2017-12-22 10 views
1

나는 사용자가 즐겨 찾기를 SQLite 데이터베이스에 추가 할 수있는 응용 프로그램을 만들었습니다.이 SQLite 데이터베이스는 즐겨 찾기 활동에 표시되는 즐겨 찾기 arraylist에 정보를로드합니다. 사용자가 클릭하면 '즐겨 찾기 버튼에 추가',이 기능이 실행됩니다데이터베이스가 기존 데이터를 보유하고있는 경우 Activity에서 메서드를 한 번만 호출하는 방법?

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

지우기 즐겨 찾기 ArrayList의 앱 코드 아래 조정하거나 loadFavourites의 첫 번째 줄에 loadFavourites()

+0

OMG 추가 favouritesarraylist.clear의 첫 번째 줄에 favouritesarraylist.clear을 추가() 일했다 youu 감사합니다! !!! –

0

앱을 실행하면 추가하지 않으면 DB에 항목이 있는지 확인해야합니다. 단지 을 loadFavourites()를 호출하기 전에

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 
} 
관련 문제