2017-01-23 8 views
-1

私はsdcard directory.iからのgridviewでshow imageを使用したいと思っています。このコードを使用します。しかし、タイプによってイメージをロードするとき:gridview adapterのbitmap.getViewにInteger [] array.howが必要ですか?sdcardディレクトリからのイメージのGridview

public class LoadPic extends Activity { 

Integer[] imageIDs = { 
     R.drawable.user, 
     R.drawable.user, 
     R.drawable.user, 
     R.drawable.user, 
     R.drawable.user, 
     R.drawable.user, 
     R.drawable.user 
}; 

int numberOfImages=0; 
Bitmap[] m; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.load_pic); 


    Intent gett = getIntent(); 


    String _area = gett.getStringExtra("area"); 
    String _domain = gett.getStringExtra("domain"); 
    String _block = gett.getStringExtra("block"); 
    String _melk = gett.getStringExtra("melk"); 
    String _build = gett.getStringExtra("build"); 
    String _apar = gett.getStringExtra("apar"); 
    String _senfi = gett.getStringExtra("senfi"); 




    File dir = new File(Environment.getExternalStorageDirectory() 
      + "/momayezi/"+_area+"-"+_domain+"-"+_block+"-"+_melk+"-"+_build+"-"+_apar+"-"+_senfi); 
    File[] files = dir.listFiles(); 
    numberOfImages=files.length; 


    for (int i=1;i<=numberOfImages;i++) 
    { 

     File img = new File("/sdcard/momayezi/"+_area+"-"+_domain+"-"+_block+"-"+_melk+"-"+_build+"-"+_apar+"-"+_senfi+"/pic"+i+".png"); 


     if(img.exists()) 
     { 
      Bitmap bit = BitmapFactory.decodeFile(img.getAbsolutePath()); 

     } 

    } 




    GridView gridView = (GridView) findViewById(R.id.gridview); 
    gridView.setAdapter(new ImageAdapter(this)); 

    gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     public void onItemClick(AdapterView<?> parent, 
           View v, int position, long id) { 
      Toast.makeText(getBaseContext(), 
        "pic" + (position + 1) + " selected", 
        Toast.LENGTH_SHORT).show(); 
     } 
    }); 



} 



public class ImageAdapter extends BaseAdapter 
{ 
    private Context context; 

    public ImageAdapter(Context c) 
    { 
     context = c; 
    } 

    //---returns the number of images--- 
    public int getCount() { 
     return numberOfImages; 
    } 

    //---returns the ID of an item--- 
    public Object getItem(int position) { 
     return position; 
    } 

    public long getItemId(int position) { 
     return position; 
    } 

    //---returns an ImageView view--- 
    public View getView(int position, View convertView, ViewGroup parent) 
    { 
     ImageView imageView; 
     if (convertView == null) { 
      imageView = new ImageView(context); 
      imageView.setLayoutParams(new GridView.LayoutParams(185, 185)); 
      imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); 
      imageView.setPadding(7, 7, 7, 7); 
     } else { 
      imageView = (ImageView) convertView; 
     } 


     /**/ 
     imageView.setImageResource(imageIDs[position]); 
     /**/ 

     return imageView; 
    } 
} 

}

私は、このクラス(アダプタ)に画像を使用することができますどのように助けてください。

答えて

0

イメージをsdcardから表示する場合あなたのグリッドビューに任意のimageloaderライブラリ

ユニバーサルイメージ・ローダー

https://github.com/nostra13/Android-Universal-Image-Loader

を使用し、その後、あなたは代わりにその整数配列の文字列配列またはモデルクラスを作成する必要があります。 以下のチュートリアルを参照してください。

http://wptrafficanalyzer.in/blog/loading-thumbnail-images-in-a-gridview-and-opening-original-images-in-alertdialog-using-media-content-providers/

0

public int getCount() { 
     return imageIDs.length(); 
    } 
+0

no.iは、これは私がファイルのIMGで画像を読み込むbecaese sdcard.butからロードイメージを望んwork.iされていないcode.this変更したい...私は(imageview.setImageResourceをreplase知りませんimageview.setImageBitmap()と –

+0

@MahshidFallahは、ストレージから画像を読み取るためのコードのスタックオーバーフローを検出しました。エラーがある場合は –

0

まず付き

public int getCount() { 
     return numberOfImages; 
    } 

を置き換える適切Drawableのまたはビットマップを設定したいですか説明?

imageView.setImageBitmap(bitmaps[position]); 

Drawableた場合は、その後、(描画可能なIDのリストを作る)

imageview.setImageResource(drawables[position]); 

これは次のとおりです。Bitmapは、これはあなたがビットマップを設定する方法である

場合(その後、ビットマップのリストとを作ります)どのようにビットマップリストを作成する:

ArrayList<Bitmap> bitmaps = new ArrayList<Bitmap>(); 


File dir = new File(Environment.getExternalStorageDirectory() 
      + "/momayezi/"+_area+"-"+_domain+"-"+_block+"-"+_melk+"-"+_build+"-"+_apar+"-"+_senfi); 
    File[] files = dir.listFiles(); 
    numberOfImages=files.length; 


    for (int i=1;i<=numberOfImages;i++) 
    { 

File f = new File("/sdcard/momayezi/"+_area+"-"+_domain+"-"+_block+"-"+_melk+"-"+_build+"-"+_apar+"-"+_senfi+"/pic"+i+".png"); 
Bitmap bmp = BitmapFactory.decodeFile(f.getAbsolutePath()); 
if(bmp!=null){ 
bitmaps.add(bmp); 
} 
} 
+0

Bitmap.butアプリケーションにエラーがあります。エラー私は何がエラーなのか分からない –

+0

imageView.setImageResource(imageIDs [position]);これは描画可能なコードです。あなたのビットマップリストはどこですか? – Spartan

+0

私の更新された答えを確認すると、いくつかのアイデアが得られます。 – Spartan

関連する問題