Photos missing in Gallery on Android -
i'm writing little test application show gallery of images on android (from sd card), works quite except part see photos. if can spot source of trouble....
much of code has been copied , pasted various examples i've found.
android screenshot http://openhomesnz.com/alister/permalink/androidpictures.jpg
notice lack of images in gallery.
i'm guessing i'm doing wrong in getview
public view getview(int position, view convertview, viewgroup parent) { imageview imgview; if (convertview == null) imgview = new imageview(cont); else imgview = (imageview)convertview; string filename = photos[position].getname(); log.i(tag, "loading file " + filename); bitmap bmap = bitmapfactory.decodefile(filename); imgview.setimagebitmap(bmap); imgview.setlayoutparams(new gallery.layoutparams(120, 90)); imgview.setscaletype(imageview.scaletype.fit_xy); imgview.setbackgroundresource(galitembg); return imgview; } the whole activity follows - in case problem elsewhere
package nz.co.salespartner.gallerytest; import java.io.file; import java.io.filenamefilter; import android.app.activity; import android.content.context; import android.content.res.typedarray; import android.graphics.bitmap; import android.graphics.bitmapfactory; import android.os.bundle; import android.util.log; import android.view.view; import android.view.viewgroup; import android.widget.baseadapter; import android.widget.gallery; import android.widget.imageview; import android.widget.textview; public class gallerytestactivity extends activity { file photos[]; private static string tag = "gallerytest"; @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); file f = new file("/sdcard/pics1"); photos = f.listfiles(new filenamefilter() { @override public boolean accept(file dir, string filename) { return filename.endswith("jpg"); } }); string filelist = ""; (file afile : photos) { filelist += afile.getname() + "\n"; } textview v = (textview)findviewbyid(r.id.filelist); v.settext(filelist); gallery gallery = (gallery)findviewbyid(r.id.gallery); gallery.setadapter(new addimgadp(this)); } public class addimgadp extends baseadapter { int galitembg; private context cont; public addimgadp(context c) { cont = c; typedarray typarray = obtainstyledattributes(r.styleable.gallerytheme); galitembg = typarray.getresourceid(r.styleable.gallerytheme_android_galleryitembackground, 0); typarray.recycle(); } public int getcount() { return photos.length; } public object getitem(int position) { return position; } public long getitemid(int position) { return position; } public view getview(int position, view convertview, viewgroup parent) { imageview imgview; if (convertview == null) imgview = new imageview(cont); else imgview = (imageview)convertview; string filename = photos[position].getname(); log.i(tag, "loading file " + filename); bitmap bmap = bitmapfactory.decodefile(filename); imgview.setimagebitmap(bmap); imgview.setlayoutparams(new gallery.layoutparams(120, 90)); imgview.setscaletype(imageview.scaletype.fit_xy); imgview.setbackgroundresource(galitembg); return imgview; } } }
okay solution obvious - , if more familiar java have spotted immediately.
instead of
string filename = photos[position].getname(); i should have had
string filename = photos[position].getabsolutepath();
Comments
Post a Comment