2017-01-23 151 views
-1

我想在sdcard目錄的gridview中顯示圖像。我使用這個code.But當我加載圖像的類型:bitmap.getView在gridview適配器需要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

更換

public int getCount() { 
     return numberOfImages; 
    } 

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

第i要改變這種代碼。此不幹活要從sdcard.but負荷圖像becaese我通過文件加載IMG圖像...我不知道我replase imageview.setImageResource( imagename.setImageBitmap() –

+0

@MahshidFallah搜索堆棧溢出代碼從存儲讀取圖像,如果有任何錯誤發佈它 –

0

首先正確地解釋你想設置可繪製位圖什麼?

如果Bitmap那麼這就是你應該如何設置位圖(使位圖的列表,然後):

imageView.setImageBitmap(bitmaps[position]); 

如果Drawable然後(讓繪製的ID列表)

imageview.setImageResource(drawables[position]); 

這是如何製作位圖列表:

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應用程序有一個error.and因爲我運行它在物理設備時,它有一個錯誤我不知道錯誤是什麼 –

+0

imageView.setImageResource(imageIDs [position]);這是可繪製的代碼。你的位圖列表在哪裏? – Spartan

+0

檢查我更新的答案,你會得到一些想法。 – Spartan