Я просто пишу небольшое тестовое приложение для показа галереи изображений на Android (с SD-карты), все это работает довольно хорошо, за исключением той части, где я вижу фотографии. Если кто-то может определить источник моей проблемы ....
Большая часть кода была скопирована и вставлена из различных примеров, которые я нашел.
Скриншот Android http://openhomesnz.com/alister/permalink/androidpictures.jpg
Обратите внимание на отсутствие изображений в Галерее.
Полагаю, я что-то не так делаю в 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;
}
Вся деятельность выглядит следующим образом - в случае, если проблема в другом месте
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 = "";
for (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;
}
}
}