If you need a list to remain when app closed, you need to store the list to
SharedPreferences, to database or to file.
Method I: using SharedPreferences.
Save selected files to SharedPreferences
// selectedFiles is Set<String> with all your selected files
Set<String> selectedFiles = new HashSet<String>();
// TODO put your selected file names into selectedFiles set
SharedPreferences prefs = getSharedPreferences("prefs_selection", 0);
SharedPreferences.Editor editor = prefs.edit();
editor.putStringSet("selection", selectedFiles);
// save
editor.commit();
Restore selected files from SharedPreferences
SharedPreferences prefs = getSharedPreferences("prefs_selection", 0);
Set<String> selectedFiles = prefs.getStringSet("selection", null);
if (selectedFiles != null) {
// TODO put elements of selectedFiles into appropriate your elements
}
Method II: using SQLLiteDatabase.
Define class derived from SQLiteOpenHelper.
public class ImagesOpenHelper extends SQLiteOpenHelper {
private static final String KEY_IMAGE = "image_file";
private static final String DATABASE_NAME = "imagesdb";
private static final int DATABASE_VERSION = 1;
private static final String IMAGES_TABLE_NAME = "images";
private static final String IMAGES_TABLE_CREATE =
"CREATE TABLE " + IMAGES_TABLE_NAME + " (" +
KEY_IMAGE + " TEXT);";
public ImagesOpenHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(IMAGES_TABLE_CREATE);
}
public void addImageFile(String file) {
ContentValues values = new ContentValues();
values.put(KEY_IMAGE, file);
getWritableDatabase().insert(IMAGES_TABLE_NAME, null, values);
}
public void readImageFiles() {
Cursor cursor = getReadableDatabase().query(IMAGES_TABLE_NAME, new String[] { KEY_IMAGE }, null, null, null, null, null, null);
try {
if (!cursor.moveToFirst())
return ;
ArrayList<SDcardPath_Activity> Picture_List = new ArrayList<SDcardPath_Activity>();
do {
String file = cursor.getString(0);
SDcardPath_Activity PICTURE = new SDcardPath_Activity();
PICTURE.sdcardPath = file;
Picture_List.add(PICTURE);
} while (cursor.moveToNext());
viewSwitcher.setDisplayedChild(0);
adapter.addAll(Picture_List);
}
finally {
cursor.close();
}
}
}
Create object of this class in activity's onCreate.
Call readImageFiles() to read image file paths.
Call addImageFile(String file) to add image file path into your database.
Add after ImageLoader imageLoader line, the following line:
ImagesOpenHelper imagesOpenHelper;
Add to onCreate
imagesOpenHelper = new ImagesOpenHelper(this);
imagesOpenHelper.readImageFiles();
In onActivityResult add the following line to the for cycle:
imagesOpenHelper.addImageFile(string);