2012-01-11 72 views
0

您好我已經可以用一點點幫助理解延長baseadapter的imageadapter。我在上個月一直在努力的應用程序的最後一站,我很難過。關於我的項目。它跟蹤車輛。對於任何車輛,用戶可以隨意使用相機拍攝儘可能多的照片。這部分工作。我可以拍照並將其保存在內部存儲器中。然後我保存該路徑到一個sqlite表。我的數據庫有一個圖像ID(_ID)EX。 1,車輛ID(v_id)前1,並且向圖像(i_image)前/data/data/com.okc.vinstick/files/img_20120111_090000.jpg的路徑。我驗證了圖像文件和數據庫條目正在保存正確。現在到了艱難的部分:在GridView中顯示圖像。我試圖按照ImageAdapter例子是這樣的:的Android ImageAdapter

public class ImageAdapter extends BaseAdapter { 
    private LayoutInflater mInflater; 
    public ArrayList<ImageItem> images = new ArrayList<ImageItem>(); 

    public ImageAdapter() { 
     mInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    } 

    public void initialize() { 
     images.clear(); 
     final String[] columns = { MediaStore.Images.Thumbnails._ID }; 
     final String orderBy = MediaStore.Images.Media._ID; 
     Cursor imagecursor = null; 
     try { 
      ContextWrapper context = MorePhotoTesting.this; 
      imagecursor = context.getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, columns, null, null, orderBy); 
     } catch(Exception e) { 
      e.printStackTrace(); 
     } 

     if(imagecursor != null){ 
      int image_column_index = imagecursor.getColumnIndex(MediaStore.Images.Media._ID); 
      int count = imagecursor.getCount(); 
      for (int i = 0; i < count; i++) { 
       imagecursor.moveToPosition(i); 
       int id = imagecursor.getInt(image_column_index); 
       ImageItem imageItem = new ImageItem(); 
       imageItem.id = id; 
       lastId = id; 
       imageItem.img = MediaStore.Images.Thumbnails.getThumbnail(getApplicationContext().getContentResolver(), id, 
         MediaStore.Images.Thumbnails.MICRO_KIND, null); 
       images.add(imageItem); 
      } 
      imagecursor.close(); 

     } 
     notifyDataSetChanged(); 
    } 

我相信一旦我明白初始化()我可以敲定getView()。顯然這個例子是使用Mediastore,我將使用應用內部存儲。我只是迷失了,我的研究已經空了。我只是沒有看到如何用我的數據庫代碼替換Mediastore的東西。如果任何人都可以指出我的方向,那就太棒了!順便例使用類:

class ImageItem { 
    boolean selection; 
    int id; 
    Bitmap img; 
} 

從主要活動的呼籲是這個樣子:

imageAdapter = new ImageAdapter(); 
    imageAdapter.initialize(); 
    imagegrid = (GridView) findViewById(R.id.PhoneImageGrid); 
    imagegrid.setAdapter(imageAdapter); 

我很抱歉,但是這是我處理這些功能的第一個項目。

回答

1

我不能完全肯定是否有一個具體的問題在這裏,但我在你的代碼注意以下行:

imagecursor = context.getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, columns, null, null, orderBy); 

既然你是存儲在手機內部存儲您的圖片,你也許應該是至少使用MediaStore.Images.Media.INTERNAL_CONTENT_URI

我也注意到你正在使用getThumbnail()。這隻適用於存儲在SD卡上的內容。

+1

好的,謝謝您的答覆。我意識到這可能不是一個直接的問題,但更多的是「任何人都可以解釋我應該做什麼」的東西。當我把它放在EXTERNAL_CONTENT_URI上時,我看到了android庫中的所有圖片。當我將其更改爲INTERNAL_CONTENT_URI時,我什麼也得不到。任何人都可以解釋那裏發生了什麼?我再次爲新手提出的問題感到抱歉,但盡力學習! – 2012-01-11 20:06:39

+0

我onActivityResult拍攝圖像後,我嘗試在imageUri.getPath運行mediascanner()。它會掃描應用程序目錄中的任何內容嗎?/data/data .... – 2012-01-11 20:31:19

+0

我決定暫時去一個不同的方向。謝謝你的幫助。 – 2012-01-12 15:11:23

相關問題