XML Layout of the GridView :
main.xml:
<gridviewxmlns:android="http://schemas.android.com/apk/res/android"Android:id="@+id/gridview"Android:layout_width="fill_parent"Android:layout_height="fill_parent"Android:numcolumns="Auto_fit"android:verticalspacing="10DP"android:horizontalspacing="10DP"Android:columnwidth="90DP"Android:stretchmode="ColumnWidth"android:gravity="Center" />
Imageitem.xml:
<relativelayout xmlns:android="http://schemas.android.com/apk/res/android"Android:layout_height="wrap_content"Android:paddingbottom="4dip"Android:layout_width="fill_parent"> <TextView android:layout_width="wrap_content"Android:layout_height="wrap_content"Android:id="@+id/textid"/> <ImageView android:layout_height="wrap_content"Android:id="@+id/itemimage"Android:layout_width="wrap_content"Android:layout_centerhorizontal="true"> </ImageView> </RelativeLayout>
Activity:
Public class Fileimageactivity extends Activity {private static final String TAG="Fileimage"; Private Listlist; Private Contentresolver CR; Private List<ImageView> imageviews =NULL; HashMap<String,Object>HashMap; Public Bitmap Bitmap; Public Bitmap newbit; Public voidonCreate (Bundle savedinstancestate) {super.oncreate (savedinstancestate); Setcontentview (R.layout.main); Findimagepath (); } Public voidFindimagepath () Gridviewgridview=(GridView) Findviewbyid (R.id.gridview); List=newarraylist(); CR=Getcontentresolver (); String[]imagedata={thumbnails._id,thumbnails.image_id,thumbnails.data};//Find ImageCursorcursor=cr.query (Thumbnails.external_content_uri, ImageData,NULL, NULL,NULL);//using cursors to find an imageString[] from= {"image_id","Path" }; int[] to = {r.id.textid, r.id.itemimage};//in the layout of the Imageview.xmlgetcolumndata (cursor); Listadapteradapter=NewPicview ( This, List, R.layout.imageitem, from, to); Gridview.setadapter (adapter); }//find the path to the image and put it in the list. Private voidgetcolumndata (Cursor cur) {if(Cur.movetofirst ()) {int_id; intimage_id; Stringimage_path; Int_idcolumn=Cur.getcolumnindex (thumbnails._id); Intimage_idcolumn=Cur.getcolumnindex (thumbnails.image_id); Intdatacolumn=Cur.getcolumnindex (Thumbnails.data); LOG.I (TAG, string.valueof (_idcolumn)); Do{ //Get the field values_id=Cur.getint (_idcolumn); image_id=Cur.getint (Image_idcolumn); Image_path=cur.getstring (DataColumn); //Do something with the values. //log.i (TAG, _id + "image_id:" + image_id + "path:"//+ image_path + "---");hashmap<string,string> hash =NewHashmap<string, string>(); Hash.put ("image_id", image_id +""); Hash.put ("Path", Image_path); List.add (hash); } while(Cur.movetonext ()); } } //many times the GridView is using Baseadapter to display pictures more, baseadapter of the picture resources from drawable resources. But its practical simpleadapter is already available,//the point is that there is setviewimage in Simpleadapter. classPicview extends simpleadapter{public picview (context context, List<? Extends Map<string,?>>data, Intresource, string[] from,int[] to) {Super (Context,data, Resource, from, to); } /** Called by BindView () to set theimage for a ImageView but only if there is no existing viewbinder or I * f the existing Viewbinder Cannothandle binding to an ImageView. * By default, the value would betreated as an image resource. * If The value cannot be used Asan image resource, the value is used as an image Uri. * This method is called Insteadof setviewimage (ImageView, int.) * If the supplied data is not a int orint Eger. * @ Value The address of image is path * Parameters * v ImageView to receive an image value the Value retrieved from the data set*/Public void Setviewimage (ImageView V, String value) {Try{Fileinputstreamfis=NewFileInputStream (value); Bufferedinputstreambis=NewBufferedinputstream (FIS); Bitmap=Bitmapfactory.decodestream (bis); Newbit= Bitmap.createscaledbitmap (Bitmap, the, the,false); V.setimagebitmap (Newbit); Bis.close (); Fis.close (); } Catch(Exceptione) {LOG.E (tag,e.tostring ()); V.setimageuri (Uri.parse (value)); } } } }
Android GridView display image of SD card