2017-01-23 1 views
-1

Ich möchte Bild in Gridview von SDCard-Verzeichnis.Ich benutze diesen Code.Aber wenn ich Bild nach Typ laden: bitmap.getView in Gridview-Adapter brauchen Integer [] array.how kann ich es beheben?Gridview Bild von SDCard-Verzeichnis

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; 
    } 
} 

}

bitte helfen, wie ich Bild in dieser Klasse verwenden kann (Adapter).

Antwort

0

Wenn Sie Bilder von SD-Karte anzeigen möchten

Universal-Image Loader

in der Rasteransicht jede Imageloader-Bibliothek verwendet

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

dann müssen Sie ein String-Array oder eine Modellklasse erstellen, anstatt dass Integer-Array. Bitte beachten Sie die folgenden Tutorials.

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 numberOfImages; 
    } 

mit

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

No.I wollen dies ändern code.this nicht Last Bild work.i von sdcard.but wollen becaese i Bild von Datei img laden ... ich weiß nicht, ich imageview.setImageResource replase (imageID) mit imageview.setImageBitmap() –

+0

@MahshidFallah Such-Stack-Überlauf für Code zum Lesen von Bildern aus dem Speicher, wenn es einen Fehler gibt es post –

0

Erste richtig erklären ersetzen, was Drawable oder Bitmap einstellen wollen?

Wenn Bitmap dann ist dies, wie Sie Bitmap gesetzt sollte (eine Liste von Bitmaps machen und dann):

imageView.setImageBitmap(bitmaps[position]); 

wenn Drawable dann (Liste der ziehbar ids machen)

imageview.setImageResource(drawables[position]); 

Dies ist wie make bitmap list:

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 App habe einen Fehler.und Becase ich es in physischen Gerät ausführen, wenn es ein Fehler Ich weiß nicht, was Fehler ist –

+0

imageView.setImageResource (imageIDs [position]); das ist Zeichencode. Wo ist deine Bitmap-Liste? – Spartan

+0

Überprüfen Sie meine aktualisierte Antwort Sie erhalten eine Idee. – Spartan

Verwandte Themen