2010-12-03 5 views
1

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

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

Android Screenshot 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; 
     } 
    } 
} 

ответ

0

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

Вместо

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

я должен был

String filename = photos[position].getAbsolutePath(); 
Смежные вопросы