编辑: 在你的OnCreate补充一点:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
picGrid = (GridView) findViewById(R.id.gridView);
picGrid.setAdapter(new ImageAdapter(this,getFilePaths()));
}
您可以使用此方法来获取手机中的所有图片的列表。将这个方法在你MainActivity.java
public ArrayList getFilePaths()
{
Uri u = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
String[] projection = {MediaStore.Images.ImageColumns.DATA};
Cursor c = null;
SortedSet dirList = new TreeSet<>();
Map resultIAV = new TreeMap<>();
String[] directories = null;
if (u != null)
{
c = managedQuery(u, projection, null, null, null);
}
if ((c != null) && (c.moveToFirst())) {
do {
String tempDir = c.getString(0);
tempDir = tempDir.substring(0, tempDir.lastIndexOf("/"));
try {
dirList.add(tempDir);
} catch (Exception e) {
}
}
while (c.moveToNext());
directories = new String[dirList.size()];
dirList.toArray(directories);
}
for(int i=0;i
{
File imageDir = new File(directories[i]);
File[] imageList = imageDir.listFiles();
if(imageList == null)
continue;
for (File imagePath : imageList) {
try {
if(imagePath.isDirectory())
{
imageList = imagePath.listFiles();
}
if (imagePath.getName().contains(".jpg")|| imagePath.getName().contains(".JPG")
|| imagePath.getName().contains(".jpeg")|| imagePath.getName().contains(".JPEG")
|| imagePath.getName().contains(".png") || imagePath.getName().contains(".PNG")
|| imagePath.getName().contains(".gif") || imagePath.getName().contains(".GIF")
|| imagePath.getName().contains(".bmp") || imagePath.getName().contains(".BMP")
)
{
Long lastmodified= imagePath.lastModified();
//System.out.println("date: "+lastmodified);
String path= imagePath.getAbsolutePath();
resultIAV.put(lastmodified,path);
}
}
// }
catch (Exception e) {
e.printStackTrace();
}
}
}
ArrayList np = new ArrayList(resultIAV.values());
Collections.reverse(np);
return np;
}
,然后通过此ArrayList的适配器主要活动的onCreate:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
picGrid = (GridView) findViewById(R.id.gridView);
picGrid.setAdapter(new ImageAdapter(this,getFilePaths()));
}
和修改适配器代码:
package com.mahmoud.myapplication;
import android.content.Context;
import android.graphics.Camera;
import android.os.Environment;
import android.provider.ContactsContract;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;
import java.io.File;
import java.util.Dictionary;
/**
* Created by mahmoud on 04/11/2015.
*/
public class ImageAdapter extends BaseAdapter {
private Context context;
ArrayList listOfPictures;
public ImageAdapter(Context context,ArrayList imagelist)
{
this.context = context;
listOfPictures = imagelist;
}
@Override
public int getCount() {
return listOfPictures.size();
}
@Override
public Object getItem(int position) {
return listOfPictures.get(position);
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ImageView iv;
if(convertView == null)
{
iv = new ImageView(context);
iv.setLayoutParams(new GridView.LayoutParams(100,100));
iv.setScaleType(ImageView.ScaleType.CENTER_CROP);
iv.setPadding(8,8,8,8);
}
else
{
iv = (ImageView) convertView;
}
iv.setImageResource(Integer.parseInt(listOfPictures[position]));
return iv;
}
}