Get all images from gallery in android programmatically Download Source code here
activity_main.xml
<RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent" android:background="#ffffff" xmlns:android="http://schemas.android.com/apk/res/android"> <GridView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/gv_folder" android:numColumns="2" android:layout_marginLeft="10dp" android:layout_marginRight="10dp"></GridView> </RelativeLayout>
MainActivity.java
package galleryimages.galleryimages; import android.Manifest; import android.content.Intent; import android.content.pm.PackageManager; import android.database.Cursor; import android.net.Uri; import android.provider.MediaStore; import android.support.v4.app.ActivityCompat; import android.support.v4.content.ContextCompat; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.AdapterView; import android.widget.GridView; import android.widget.Toast; import java.util.ArrayList; public class MainActivity extends AppCompatActivity { public static ArrayList<Model_images> al_images = new ArrayList<>(); boolean boolean_folder; Adapter_PhotosFolder obj_adapter; GridView gv_folder; private static final int REQUEST_PERMISSIONS = 100; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); gv_folder = (GridView)findViewById(R.id.gv_folder); gv_folder.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { Intent intent = new Intent(getApplicationContext(), PhotosActivity.class); intent.putExtra("value",i); startActivity(intent); } }); if ((ContextCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) && (ContextCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED)) { if ((ActivityCompat.shouldShowRequestPermissionRationale(MainActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE)) && (ActivityCompat.shouldShowRequestPermissionRationale(MainActivity.this, Manifest.permission.READ_EXTERNAL_STORAGE))) { } else { ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE}, REQUEST_PERMISSIONS); } }else { Log.e("Else","Else"); fn_imagespath(); } } public ArrayList<Model_images> fn_imagespath() { al_images.clear(); int int_position = 0; Uri uri; Cursor cursor; int column_index_data, column_index_folder_name; String absolutePathOfImage = null; uri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI; String[] projection = {MediaStore.MediaColumns.DATA, MediaStore.Images.Media.BUCKET_DISPLAY_NAME}; final String orderBy = MediaStore.Images.Media.DATE_TAKEN; cursor = getApplicationContext().getContentResolver().query(uri, projection, null, null, orderBy + " DESC"); column_index_data = cursor.getColumnIndexOrThrow(MediaStore.MediaColumns.DATA); column_index_folder_name = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.BUCKET_DISPLAY_NAME); while (cursor.moveToNext()) { absolutePathOfImage = cursor.getString(column_index_data); Log.e("Column", absolutePathOfImage); Log.e("Folder", cursor.getString(column_index_folder_name)); for (int i = 0; i < al_images.size(); i++) { if (al_images.get(i).getStr_folder().equals(cursor.getString(column_index_folder_name))) { boolean_folder = true; int_position = i; break; } else { boolean_folder = false; } } if (boolean_folder) { ArrayList<String> al_path = new ArrayList<>(); al_path.addAll(al_images.get(int_position).getAl_imagepath()); al_path.add(absolutePathOfImage); al_images.get(int_position).setAl_imagepath(al_path); } else { ArrayList<String> al_path = new ArrayList<>(); al_path.add(absolutePathOfImage); Model_images obj_model = new Model_images(); obj_model.setStr_folder(cursor.getString(column_index_folder_name)); obj_model.setAl_imagepath(al_path); al_images.add(obj_model); } } for (int i = 0; i < al_images.size(); i++) { Log.e("FOLDER", al_images.get(i).getStr_folder()); for (int j = 0; j < al_images.get(i).getAl_imagepath().size(); j++) { Log.e("FILE", al_images.get(i).getAl_imagepath().get(j)); } } obj_adapter = new Adapter_PhotosFolder(getApplicationContext(),al_images); gv_folder.setAdapter(obj_adapter); return al_images; } @Override public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); switch (requestCode) { case REQUEST_PERMISSIONS: { for (int i = 0; i < grantResults.length; i++) { if (grantResults.length > 0 && grantResults[i] == PackageManager.PERMISSION_GRANTED) { fn_imagespath(); } else { Toast.makeText(MainActivity.this, "The app was not allowed to read or write to your storage. Hence, it cannot function properly. Please consider granting it this permission", Toast.LENGTH_LONG).show(); } } } } } }
adapter_photosfolder.xml
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <LinearLayout android:layout_width="match_parent" android:orientation="vertical" android:layout_marginTop="10dp" android:layout_marginLeft="10dp" android:background="@drawable/drawable_photofolder" android:layout_marginRight="10dp" android:layout_marginBottom="10dp" android:layout_height="match_parent"> <ImageView android:layout_width="150dp" android:layout_gravity="center" android:layout_height="150dp" android:id="@+id/iv_image"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/tv_folder" android:textStyle="bold" android:textColor="#000000" android:layout_marginLeft="10dp" android:textSize="15dp"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/tv_folder2" android:textColor="#dfdfdf" android:layout_marginBottom="10dp" android:layout_marginLeft="10dp" android:textSize="15dp"/> </LinearLayout> <RelativeLayout android:layout_width="match_parent" android:id="@+id/rl_select" android:alpha="0.5" android:layout_height="match_parent"> </RelativeLayout> </RelativeLayout>
Adapter_PhotosFolder.java
package galleryimages.galleryimages; import android.content.Context; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.ImageView; import android.widget.TextView; import com.bumptech.glide.Glide; import com.bumptech.glide.load.engine.DiskCacheStrategy; import java.util.ArrayList; public class Adapter_PhotosFolder extends ArrayAdapter<Model_images> { Context context; ViewHolder viewHolder; ArrayList<Model_images> al_menu = new ArrayList<>(); public Adapter_PhotosFolder(Context context, ArrayList<Model_images> al_menu) { super(context, R.layout.adapter_photosfolder, al_menu); this.al_menu = al_menu; this.context = context; } @Override public int getCount() { Log.e("ADAPTER LIST SIZE", al_menu.size() + ""); return al_menu.size(); } @Override public int getItemViewType(int position) { return position; } @Override public int getViewTypeCount() { if (al_menu.size() > 0) { return al_menu.size(); } else { return 1; } } @Override public long getItemId(int position) { return position; } @Override public View getView(final int position, View convertView, ViewGroup parent) { if (convertView == null) { viewHolder = new ViewHolder(); convertView = LayoutInflater.from(getContext()).inflate(R.layout.adapter_photosfolder, parent, false); viewHolder.tv_foldern = (TextView) convertView.findViewById(R.id.tv_folder); viewHolder.tv_foldersize = (TextView) convertView.findViewById(R.id.tv_folder2); viewHolder.iv_image = (ImageView) convertView.findViewById(R.id.iv_image); convertView.setTag(viewHolder); } else { viewHolder = (ViewHolder) convertView.getTag(); } viewHolder.tv_foldern.setText(al_menu.get(position).getStr_folder()); viewHolder.tv_foldersize.setText(al_menu.get(position).getAl_imagepath().size()+""); Glide.with(context).load("file://" + al_menu.get(position).getAl_imagepath().get(0)) .diskCacheStrategy(DiskCacheStrategy.NONE) .skipMemoryCache(true) .into(viewHolder.iv_image); return convertView; } private static class ViewHolder { TextView tv_foldern, tv_foldersize; ImageView iv_image; } }
PhotosActivity.java
package galleryimages.galleryimages; import android.app.Activity; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.widget.GridView; /** * Created by deepshikha on 20/3/17. */ public class PhotosActivity extends AppCompatActivity { int int_position; private GridView gridView; GridViewAdapter adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); gridView = (GridView)findViewById(R.id.gv_folder); int_position = getIntent().getIntExtra("value", 0); adapter = new GridViewAdapter(this,MainActivity.al_images,int_position); gridView.setAdapter(adapter); } }
GridViewAdapter.java
package galleryimages.galleryimages; /** * Created by deepshikha on 3/3/17. */ import android.app.Activity; import android.content.Context; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.TextView; import com.bumptech.glide.Glide; import com.bumptech.glide.load.engine.DiskCacheStrategy; import java.util.ArrayList; import java.util.List; public class GridViewAdapter extends ArrayAdapter<Model_images> { Context context; ViewHolder viewHolder; ArrayList<Model_images> al_menu = new ArrayList<>(); int int_position; public GridViewAdapter(Context context, ArrayList<Model_images> al_menu,int int_position) { super(context, R.layout.adapter_photosfolder, al_menu); this.al_menu = al_menu; this.context = context; this.int_position = int_position; } @Override public int getCount() { Log.e("ADAPTER LIST SIZE", al_menu.get(int_position).getAl_imagepath().size() + ""); return al_menu.get(int_position).getAl_imagepath().size(); } @Override public int getItemViewType(int position) { return position; } @Override public int getViewTypeCount() { if (al_menu.get(int_position).getAl_imagepath().size() > 0) { return al_menu.get(int_position).getAl_imagepath().size(); } else { return 1; } } @Override public long getItemId(int position) { return position; } @Override public View getView(final int position, View convertView, ViewGroup parent) { if (convertView == null) { viewHolder = new ViewHolder(); convertView = LayoutInflater.from(getContext()).inflate(R.layout.adapter_photosfolder, parent, false); viewHolder.tv_foldern = (TextView) convertView.findViewById(R.id.tv_folder); viewHolder.tv_foldersize = (TextView) convertView.findViewById(R.id.tv_folder2); viewHolder.iv_image = (ImageView) convertView.findViewById(R.id.iv_image); convertView.setTag(viewHolder); } else { viewHolder = (ViewHolder) convertView.getTag(); } viewHolder.tv_foldern.setVisibility(View.GONE); viewHolder.tv_foldersize.setVisibility(View.GONE); Glide.with(context).load("file://" + al_menu.get(int_position).getAl_imagepath().get(position)) .diskCacheStrategy(DiskCacheStrategy.NONE) .skipMemoryCache(true) .into(viewHolder.iv_image); return convertView; } private static class ViewHolder { TextView tv_foldern, tv_foldersize; ImageView iv_image; } }
Model_images.java
package galleryimages.galleryimages; import java.util.ArrayList; /** * Created by deepshikha on 3/3/17. */ public class Model_images { String str_folder; ArrayList<String> al_imagepath; public String getStr_folder() { return str_folder; } public void setStr_folder(String str_folder) { this.str_folder = str_folder; } public ArrayList<String> getAl_imagepath() { return al_imagepath; } public void setAl_imagepath(ArrayList<String> al_imagepath) { this.al_imagepath = al_imagepath; } }
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="galleryimages.galleryimages"> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"></uses-permission> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".PhotosActivity"></activity> </application> </manifest>
ADD THIS DEPENDENCY IN YOUR PROJECT:
compile 'com.github.bumptech.glide:glide:3.7.0'
April 23, 2017 at 10:32 am
Thanks this is great.
Once all images are open how can I click the image and dispaly that image in full screen?
Thanks
LikeLike
April 23, 2017 at 10:45 am
Hello Matt,
Just get the item clicked position and pass that position to new activity By using this:
listview.setonitemclickedposition:
Now pass that position to new activity:
Intent intent = new Intent(getApplicationcontext, NewActivity.this)
intent.putExtra(“position”,i);
startactivity(intent);
Now get this position on your new activity:
int int= getIntent(“position”);
Now create your arraylist static on your MainActivity.
Now load it in your new activity:
Glide.with(context).load(“file://” + al_video.get(position).getStr_thumb())
.skipMemoryCache(false)
.into(iv_image);
If still you have any issue then let me know.
Thanks!
LikeLike
April 23, 2017 at 11:10 am
Thanks for your quick reply.
Where do I need to put listview.setonitemclickedposition and call the next activity. Is this from the main activity. Sorry I’m quite new to this.
Thansk
LikeLike
April 23, 2017 at 11:20 am
Yes its from Mainactivity like this:
lv.setOnItemClickListener(new OnItemClickListener()
{
@Override
public void onItemClick(AdapterView adapter, View v, int position,
long arg3)
{
String value = (String)adapter.getItemAtPosition(position);
// assuming string and if you want to get the value on click of list item
// do what you intend to do on click of listview row
}
});
LikeLike
April 25, 2017 at 6:38 pm
Thank you so much for this blog.
I need to select all images from gallery which are between given date range. Can you please help me how I can achieve this requirement ?
LikeLike
April 25, 2017 at 7:00 pm
Hello,
First of all you have to create the custom gallery. then you have to sort the images according to date. Then select the start and end date. Show data according to that date.
Thanks!
LikeLike
April 25, 2017 at 7:20 pm
I am very new to android. Can you show me the process to do it ? How to make custom gallery and get the dates of the images?
LikeLike
April 27, 2017 at 7:40 am
Hello,
I changed small code in your mainActivity to get the images which are in the given date range,
int column_index_data, column_index_folder_name;
long to = 2017-03-03;
long from = 2017-01-01;
String absolutePathOfImage = null;
uri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
String[] projection = {MediaStore.MediaColumns.DATA, MediaStore.Images.Media.BUCKET_DISPLAY_NAME,
MediaStore.Images.Media.DATE_TAKEN,
MediaStore.Images.Media.DATE_ADDED};
final String orderBy = MediaStore.Images.Media.DATE_TAKEN;
cursor = managedQuery(uri, projection, MediaStore.Images.Media.DATE_TAKEN + “>? and ”
+ MediaStore.Images.Media.DATE_TAKEN + “<?",
new String[] { "" + from, "" + to }, orderBy + " DESC");
Do you think I am doing it right?
LikeLike
April 27, 2017 at 3:39 pm
Actually I want to show only those images in the folder which are in the given date range. I will hard code the date range in my program for testing.
I think what I did above is not right. I just want to load those images which are in given date range. Can you please help me.
LikeLike
April 27, 2017 at 4:58 pm
try to get the file date like this:
File file = new File(filePath);
Date lastModDate = new Date(file.lastModified());
Log.i(“File last modified @ : “+ lastModDate.toString());
LikeLike
May 22, 2017 at 10:27 pm
Can you please explain what is the difference between your GridViewAdapter and Adapter_photosfolder classes?
LikeLike
June 1, 2017 at 10:46 am
ma’am i have an error in the line ::::
Glide.with(context).load(“file + al_menu.get(int_position).getAl_imagepath().get(position))
its saying iilegal line end in the sring literal. what does that mean where have i gone wrong ??
LikeLike
June 1, 2017 at 10:50 am
Did you add the dependency of glide in your gradle file
LikeLike
June 1, 2017 at 4:14 pm
Yes i did that all the other error were solved only this error is occurring..
LikeLike
August 23, 2018 at 4:39 pm
Greetings Komal!
I copied the code each file at a time (for studying purposes), from the website. I didn’t download the source code from the link. I had the same problem as you did, and perhaps by now you might had fixed it.
In any case, if anyone else is stuck at this error:
Glide.with(context).load(“file + al_menu.get(int_position).getAl_imagepath().get(position))
Some closing double quotes are missing after the “file”.
It would be like this:
Glide.with(context).load(“file” + al_menu.get(int_position).getAl_imagepath().get(position))
This happens in the Adapters_PhotosFolder.java file and in the GridViewAdapter.java file.
Cheers!!
Deepshikhapuri thank you for this example! There isn’t anything like this in the whole network, as easy to implement as this one. Thanks!!
LikeLike
June 8, 2017 at 6:13 pm
Please help me out,how can i get the selected image Uri from folder
LikeLike
June 8, 2017 at 6:19 pm
Hello use this method to get the images :
public ArrayList fn_imagespath() {
al_images.clear();
int int_position = 0;
Uri uri;
Cursor cursor;
int column_index_data, column_index_folder_name;
String absolutePathOfImage = null;
uri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
String[] projection = {MediaStore.MediaColumns.DATA, MediaStore.Images.Media.BUCKET_DISPLAY_NAME};
final String orderBy = MediaStore.Images.Media.DATE_TAKEN;
cursor = getApplicationContext().getContentResolver().query(uri, projection, null, null, orderBy + ” DESC”);
column_index_data = cursor.getColumnIndexOrThrow(MediaStore.MediaColumns.DATA);
column_index_folder_name = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.BUCKET_DISPLAY_NAME);
while (cursor.moveToNext()) {
absolutePathOfImage = cursor.getString(column_index_data);
Log.e(“Column”, absolutePathOfImage);
Log.e(“Folder”, cursor.getString(column_index_folder_name));
for (int i = 0; i < al_images.size(); i++) {
if (al_images.get(i).getStr_folder().equals(cursor.getString(column_index_folder_name))) {
boolean_folder = true;
int_position = i;
break;
} else {
boolean_folder = false;
}
}
if (boolean_folder) {
ArrayList al_path = new ArrayList();
al_path.addAll(al_images.get(int_position).getAl_imagepath());
al_path.add(absolutePathOfImage);
al_images.get(int_position).setAl_imagepath(al_path);
} else {
ArrayList al_path = new ArrayList();
al_path.add(absolutePathOfImage);
Model_images obj_model = new Model_images();
obj_model.setStr_folder(cursor.getString(column_index_folder_name));
obj_model.setAl_imagepath(al_path);
al_images.add(obj_model);
}
}
for (int i = 0; i < al_images.size(); i++) {
Log.e("FOLDER", al_images.get(i).getStr_folder());
for (int j = 0; j < al_images.get(i).getAl_imagepath().size(); j++) {
Log.e("FILE", al_images.get(i).getAl_imagepath().get(j));
}
}
obj_adapter = new Adapter_PhotosFolder(getApplicationContext(),al_images);
gv_folder.setAdapter(obj_adapter);
return al_images;
}
LikeLike
June 30, 2017 at 9:12 pm
Hello,
Thanks for your interesting blog. The code works such a charm.
I am very new in android programming.
I was wondering how to add an extra folder, named let’s say “all photos”, including all the existing photos.
Thanks in advance!
Lavi
LikeLike
July 1, 2017 at 3:28 am
Hello,
Just create the directory and then copy all the files in your folder
Thanks!
LikeLike
July 6, 2017 at 9:04 am
hello,
when i run code , my app only show folder but problem to show image
anyone can help me
?
LikeLike
July 6, 2017 at 10:34 am
Hello,
Where you are getting​ issue can u plz explain.
LikeLike
July 6, 2017 at 12:24 pm
Mam this is what I wanted but I am having a little problem.
When a folder having a lot of images like the one i am having on my smartphone is opened(mine having approx 6300 photos) and when I start to scroll down it scrolls flawlessly up to a point than it starts to lag and than freezes and finally crashes.I found that when I scroll the heap memory allocated to it gets filled completely and no more memory is allocated and it crashes.I thought the replacing gridview with recyclerview would work as it recycles views (not to forget that you were also recylcling views with view holder) but it was also of no use it again crashed.Another thing which I did was in manifest file was I added android:largeHeap=”true” the result was that I was able to scroll to a larger extent but it again crashed . Before making large heap true The max heap which would get assigned was 128mb and after making large heap true max heap was 256 mb my smartphone is having 2gb ram thinking of phones having lesser ram it would crash more faster.Please find a solution I am in a need of the solution badly.
THANKS
LikeLike
July 10, 2017 at 11:10 am
hello App run perfectly without any error but images not showing…
i test this app in real device please tell me what should i do
LikeLike
July 10, 2017 at 11:14 am
Hello vicky,
Please check the file path in your log then load it using glide.
Thanks!
LikeLike
July 13, 2017 at 5:30 am
Hey Deepshikha,
In your PhotosActvitiy.java, for every photo you display, how do I set an OnClickListener. When you click on the gridView folder, we intent to PhotosActivty.java, which shows the images based on their position. How can I set an OnClick listener for each photo inside of the GridViewFolder?.
LikeLike
July 13, 2017 at 9:42 am
Just the Onclicklistener() on viewholder then pass the image path to nxt activity. Now load that image using glide
LikeLike
July 13, 2017 at 12:29 pm
So just set an OnClickListener on the image in PhotosActivity.java like this?
gridView = (GridView)findViewById(R.id.gv_folder);
int_position = getIntent().getIntExtra(“value”, 0);
adapter = new GridViewAdapter(this, GalleryFragment.al_images,int_position);
gridView.setAdapter(adapter);
gridView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView parent, View view, int position, long id) {
final Dialog dialog = new Dialog(PhotosActivity.this);
dialog.setTitle(“Gallery Information”);
dialog.setContentView(R.layout.dialog_gallery_info);
dialog.show();
LikeLike
July 13, 2017 at 12:30 pm
Yes
LikeLike
July 13, 2017 at 5:37 am
Also, how do I load all the folders from the Android gallery? What should I do?
LikeLike
July 13, 2017 at 9:43 am
Just add all the images from particular folder to ur arraylist​ then show that arraylist in ur list or grid view
LikeLike
July 13, 2017 at 2:16 pm
I am not able to figure out how to do this. Could you help me how to do this?
LikeLike
July 20, 2017 at 12:49 pm
What if I have a camera intent inside my application and I want to add the image taken from the camera into the al_images ArrayList?
LikeLike
July 29, 2017 at 1:21 am
Hey Deepshika,
I have also figured out the position is not unique. Just wanted to know, how do we create a full screen Viewpager for a slideshow? Is it possible?
LikeLike
July 24, 2017 at 6:34 pm
Hey Deepshika,
I just have a question to ask you! Everything works fine as of now, I am able to retrieve all the folders and files into my application. I am doing something more. Whenever I am going to long press an image or a folder, I am creating a dialog and wanna add some information to the file or folder. So here is the question. Is the position uniquely identified in each folder?.
To make it clear for you
In your example image, there are 4 folders HD Wallpapers, Camera and Downloads.
Is the first image position of the HD Wallpapers different from first image position of Camera? If I am going to add information to the first image of HD Wallpapers, will it add to the first image of Camera and Downloads too?
Kindly awaiting your reply.
LikeLike
July 29, 2017 at 1:21 am
Hey Deepshika,
I have also figured out the position is not unique. Just wanted to know, how do we create a full screen Viewpager for a slideshow? Is it possible?
LikeLike
August 28, 2017 at 3:52 am
Hi Thank you for this wonderful tutorial it really works for me. I have a question it is possible to put a checkbox in it so that i can select multiple images in it?
LikeLike
September 2, 2017 at 6:15 pm
Hi, Can you please tell how to display all these images on full screen by swiping right to left ?
LikeLike
September 6, 2017 at 7:23 am
Dear Deepshikha,
I appreciate your efforts for this job. On first install on clicking on allow button on permission dialog on android marshmallow crashes the app. All other work done by you is awesome.
Cheers
Pradeep
LikeLike
March 28, 2018 at 9:57 am
+1 from my side … great efforts keep it up. i was searching for this solution you save my day. Thanks Deep.
LikeLike
May 4, 2018 at 8:23 am
Hi Deepshika,
It is very useful info that you have shared. Thanks a lot 🙂
Please keep posted new …
Pavani
LikeLike
September 16, 2018 at 9:04 pm
Great!
LikeLike
November 29, 2018 at 12:03 pm
how to show the another folder images
LikeLike
December 19, 2018 at 4:51 am
hello, i make camera app but after i save my image and will show in custom galery, that image not show or not update yet, how to tell custom galery to refresh all image before show ? thanks
LikeLike
May 28, 2019 at 9:38 am
how to get specific folder of video
LikeLike
September 10, 2019 at 2:57 am
tnxx for the project mam….
LikeLike
November 8, 2019 at 4:11 am
this is nice tnxxx for this code
LikeLike
February 6, 2020 at 10:04 am
Hi mam
I want to get all images from gallery automatically and upload them to server without any button click
LikeLike
July 21, 2020 at 12:50 pm
Hi maam need help getting ViewHolder of recclerview which Viewholder do you use .
where you get ViewHolder there is no Import file???
LikeLike
July 21, 2020 at 12:59 pm
Gotcha
Thanks for your help
LikeLike
June 8, 2021 at 6:50 pm
Hello Mam,
Can you please make an explanatory video on this project as I could help me a lot especially as I’m a beginner and its a bit difficult for me to underStand the whole process in a go.
LikeLike