Фотографии отсутствуют в Галерее на Android

1

Я просто пишу небольшое тестовое приложение для отображения галереи изображений на Android (с SD-карты), все работает довольно хорошо, за исключением той части, где я вижу фотографии. Если кто-то может определить источник моей проблемы.

Большая часть кода была скопирована и вставлена из различных примеров, которые я нашел.

Изображение 174551

Обратите внимание на отсутствие изображений в Галерее.

Я предполагаю, что я делаю что-то не так в 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;
         }
     }
 }
Теги:
gallery
android-gallery

1 ответ

0
Лучший ответ

Хорошо, решение было довольно очевидным - и если бы я был более знаком с Java, я, вероятно, сразу заметил бы его.

Вместо

String filename = photos[position].getName();

Я должен был

String filename = photos[position].getAbsolutePath();

Ещё вопросы

Сообщество Overcoder
Наверх
Меню