1

我正在開發android應用程序。在我的應用程序中,我想從圖庫視圖中的sd卡片文件夾中顯示圖像。我正在使用BaseAdapter。我試圖從我的項目中的資源文件夾中的可繪製文件夾中顯示圖像,它工作正常。 我嘗試下面的代碼:在圖庫視圖中顯示sd卡片文件夾中的圖像(android)

public class ImageAdapter extends BaseAdapter { 

private Context context; 
public static Integer[] imageIDs={ 
     R.drawable.sp1,R.drawable.sp2, 
     R.drawable.sp3,R.drawable.sp4, 
     R.drawable.sp5,R.drawable.sp6, 
     R.drawable.sp7,R.drawable.sp8, 
     R.drawable.sp9 
}; 

public ImageAdapter(Context context){ 
    this.context=context; 
} 
@Override 
public int getCount() { 
    // TODO Auto-generated method stub 
    return imageIDs.length; 
} 

@Override 
public Object getItem(int position) { 
    // TODO Auto-generated method stub 
    return position; 
} 

@Override 
public long getItemId(int position) { 
    // TODO Auto-generated method stub 
    return position; 
} 

@Override 
public View getView(int position, View 
     convertView, ViewGroup parent) { 
    // TODO Auto-generated method stub 
    ImageView image=new ImageView(context); 
    image.setImageResource(imageIDs[position]); 
    image.setAdjustViewBounds(true); 
    image.setLayoutParams(new Gallery.LayoutParams(120,120)); 
    image.setScaleType(ImageView.ScaleType.FIT_CENTER); 
    return image; 
} 

現在我想顯示從SD卡文件夾的圖像和畫廊的格式顯示它們。 因爲我試圖獲得數組中的所有圖像,但我不知道如何以數組格式獲取它們。我可以通過以下方式訪問sd文件夾中的圖像。

File path = new File(Environment.getExternalStorageDirectory()+"/download/sp1.jpg"); 

如何獲得他們所有的陣列格式和畫廊view.Or顯示它們是有顯示它們的陣列,而不是任何其他替代方法?

需要幫助....謝謝....

回答

1

請參見下面的代碼

if (android.os.Environment.getExternalStorageState().equals(
      android.os.Environment.MEDIA_MOUNTED)) { 

     // It have to be matched with the directory in SDCard 
     boolean exist = new File(Environment.getExternalStorageDirectory() 
       + File.separator + "download").exists(); 
     if (exist) { 
      File f = new File(Environment.getExternalStorageDirectory() 
        + File.separator + "download"); 

      File[] files = f.listFiles(); 
      File file; 
      for (int i = 0; i < files.length; i++) { 
       file = files[i]; 
       Bitmap bitmap = decodeFile(file); 
       return bitmap;  
      } 
     } 
    } 

你能做到這一點way

@Override 
public int getCount() { 
    // TODO Auto-generated method stub 
    return files.length; 
} 



@Override 
public View getView(int position, View 
     convertView, ViewGroup parent) { 
    // TODO Auto-generated method stub 
    ImageView image=new ImageView(context); 

    //image.setImageResource(imageIDs[position]); 
    File file = files[position] 
    Bitmap bitmap = decodeFile(file); 
    image.setImageBitmap(bitmap); 

    image.setAdjustViewBounds(true); 
    image.setLayoutParams(new Gallery.LayoutParams(120,120)); 
    image.setScaleType(ImageView.ScaleType.FIT_CENTER); 
    return image; 
} 
+0

Nirali謝謝你的回覆。我試過你的解決方案。我想以陣列格式存儲所有圖像。我試過** public Bitmap [] bitmapArray = new Bitmap []; **並將所有位圖值存儲在數組中。但在定義位圖數組時,它給了我錯誤**變量必須提供任一維度表達式或數組初始化** – nilkash 2012-07-27 05:34:54

+0

請參閱我編輯了我的答案。你不能這樣做 – Nirali 2012-07-27 05:42:46

+0

hye Nirali你解決方案工作正常。我做了一些改變**位圖位= BitmapFactory.decodeFile(file.getPath()); **我也想在另一個視圖中使用所有這些圖像;所以我將這些位圖值存儲在位圖數組中......謝謝 – nilkash 2012-07-27 06:29:05

1

您需要加載圖像作爲位圖:

getView(...){ 
File f = new File(directory, filename); 
Bitmap bitmap = BitmapFactory.decodeFile(f.getPath()); 
... 
ImageView image=new ImageView(context); 
image.setImageBitmap(bitmap); 
} 
+0

謝謝Axarydax的快速回復我會試試這個... – nilkash 2012-07-27 05:05:55

相關問題