나는 사용자가 즐겨 찾기를 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에 다시 추가되지 않도록 할 수 있습니까?
OMG 추가 favouritesarraylist.clear의 첫 번째 줄에
favouritesarraylist.clear
을 추가() 일했다 youu 감사합니다! !!! –