2012-01-11 2 views
0

こんにちは私はbaseadapterを拡張しているimageadapterを理解するのに少し役立つことができました。私は先月働いていたアプリのホームレスにいて、困惑しています。私のプロジェクトについて少し。それは車両を追跡します。どの車両でも、ユーザーはカメラで多くの写真を撮ることができます。この部分は動作します。私は写真を撮ることができ、それを内部の記憶装置に保存する。私はそのパスをsqliteテーブルに保存します。私のデータベースにはイメージID(_id)があります。 1、車両id(v_id)ex1、画像へのパス(i_image)ex /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()が使用されていることに気付きました。これは、sdcardに格納されているコンテンツでのみ機能します。

+1

回答ありがとうございます。私はそれが直接的な質問ではないかもしれないが、「誰かが私がやっているべきことを説明することができる」ということのほうが多いことを認識している。私はEXTERNAL_CONTENT_URIにそれを残すとき、私はアンドロイドギャラリーのすべての写真を見ています。 INTERNAL_CONTENT_URIに変更すると何も得られません。誰もそこに起こっていることを説明することはできますか?繰り返しますが、初心者の質問には申し訳ありませんが、勉強に全力を尽くしています! –

+0

私のonActivityResultイメージをキャプチャした後、私はimageUri.getPath()でmediascannerを実行しようとします。アプリケーションディレクトリ内の何かをスキャンしますか?/data/data .... –

+0

私はしばらくの間別の方向に行くことに決めました。ご協力いただきありがとうございます。 –

関連する問題