2014-02-27 41 views
0

你好,我遇到了一些問題。我找不到一個工作示例,允許我將所有圖像從一個文件夾加載到網格視圖中。 我有一個工作網格視圖,但我必須加載圖像通過一個int數組與R.drawable.theImageName 我需要的是一種功能,可以加載所有的圖像到網格,而不必知道圖像的名稱。 我按照這個教程創建網格視圖http://www.youtube.com/watch?v=Y75i3U7X-ng將文件夾路徑中的圖像加載到網格視圖中,Android

TNX的幫助 和IM有點新的APP的編程口,如果我忘了什麼事,只是告訴我,我會嘗試將代碼粘貼。

GridView gv = (GridView) findViewById(R.id.car_gridView); 
    gv.setAdapter(new CarImageAdapter(getApplicationContext())); 

private Context context; 
public CarImageAdapter(Context applicationContext) { 
     // TODO Auto-generated constructor stub 
     context = applicationContext; 
    } 

public View getView(int position, View contentView, ViewGroup parrent) { 
    // TODO Auto-generated method stub 
    ImageView iv; 
    if(contentView != null) 
    { 
     iv = (ImageView) contentView; 
    } 
    else 
    { 
     iv = new ImageView(context); 
     iv.setLayoutParams(new GridView.LayoutParams(300, 300)); 
     iv.setScaleType(ScaleType.CENTER_CROP); 
     iv.setPadding(8, 8, 8, 8); 

    } 

    iv.setImageResource(car_images[position]); 
    return iv; 
} 

我使用它來創建和保存圖像。

public void captureImage() 
{ 
    ImageView imageView = (ImageView) findViewById(R.id.img_resultimage); 

    root = Environment.getExternalStorageDirectory().toString() + "/Upgrade_rim"; 
    imageFolderPath = root + "/car_images"; 
    File imagesFolder = new File(imageFolderPath); 
    imagesFolder.mkdirs(); 


    String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()); 
    imageName = "car_"+timeStamp +".png"; 


    File image = new File(imageFolderPath, imageName); 
    fileUri = Uri.fromFile(image); 
    imageView.setTag(imagesFolder + File.separator + imageName); 
    Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
    takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri); 
    startActivityForResult(takePictureIntent, CAMERA_IMAGE_REQUEST); 

} 
+0

像你只是想從移動的所有圖片是嗎? –

+0

我會給你的代碼,以獲得所有圖片,你將能夠顯示在網格中,是否你的概率將解決我在這裏使用的列表活動 –

回答

0

我列出存儲在SD卡根目錄所有PNG文件。我已經用PDF文件成功完成了這項工作。

public class Sdcard_pdf_list extends ListActivity { 

    String[] pdflist; 
    File[] imagelist; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 


    File images = Environment.getExternalStorageDirectory(); 
     imagelist = images.listFiles(new FilenameFilter() { 

      public boolean accept(File dir, String name) 
      { 
       return ((name.endsWith(".png"))); 
      } 

     }); 

     pdflist = new String[imagelist.length]; 
     for (int i = 0; i < imagelist.length; i++) { 

      pdflist[i] = imagelist[i].getName(); 

     } 
     this.setListAdapter(new ArrayAdapter<String>(this, 
       android.R.layout.simple_list_item_1, pdflist)); 

    } 


} 

如果您有任何疑問,請填寫免費通知。

+0

。你也可以使用gridview。 – Ankur

+0

我有點困惑,我應該把文件路徑,當我做類似 String root = Environment.getExternalStorageDirectory()。toString()+「/ Upgrade_rim/car_images」; – Wervada

0

一個選項是使用Assets文件夾。

將您的所有圖像放在一個文件夾中,在資產文件夾中顯示「產品」。

我使用ImageView來顯示圖像。您可以相應地將其更改爲gridview。

,在這裏你去:

public class Assets_Folder_Img extends Activity 
{ 

    ArrayList<String> arr_Img = new ArrayList<String>(); 
    String ASSET_FOLDER_NAME="products"; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_assets__folder__img); 

     get_images_in_List(ASSET_FOLDER_NAME); 
     setImages(); 
    } 

    void setImages() 
    { 

     InputStream is = null; 

     for(int i=0;i<arr_Img.size();i++) 
     { 
      try 
      { 
       is = getAssets().open(ASSET_FOLDER_NAME+"/" +arr_Img.get(i)); 
      } 
      catch (IOException e) 
      { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
      Bitmap bit = BitmapFactory.decodeStream(is); 

      LinearLayout ll = (LinearLayout)findViewById(R.id.root); 

       ImageView image = new ImageView(this); 
       image.setLayoutParams(new android.view.ViewGroup.LayoutParams(120,120)); 
       image.setImageBitmap(bit); 
       ll.addView(image); 

     } 
    } 

    private void get_images_in_List(String folderName) 
     { 
      try 
      { 
       String [] list = getAssets().list(folderName); 

        arr_Img.addAll(Arrays.asList(list)); 
        Log.e("log", "size is "+arr_Img.size()); 
      } 
      catch (IOException e) 
      { 
       e.printStackTrace(); 
      } 

     } 
} 

把圖像資產僅適用於少數圖像perpose存儲。否則,它會給應用程序帶來負擔。

相關問題