2012-06-04 2 views
1

je veux afficher des images de mysql serveur (test dans localhost) en utilisant imageurl, j'ai des images dans un filder sur mon serveur, dans une application client android comme gridview avec text.how dois-je utiliser imageurl dans mon code? mymainmenu.javaaffichage de l'image comme gridview

public class MainMenu extends Activity { 



    GridView gridView; 

    static final String[] MOBILE_OS = new String[] { 
     "Android", "iOS","Windows", "Blackberry" }; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 
     setContentView(R.layout.mainmenu_list); 


     gridView = (GridView) findViewById(R.id.gridView1); 

     gridView.setAdapter(new ImageAdapter(this, MOBILE_OS)); 

     gridView.setOnItemClickListener(new OnItemClickListener() { 
      public void onItemClick(AdapterView<?> parent, View v, 
        int position, long id) { 
       Toast.makeText(
        getApplicationContext(), 
        ((TextView) v.findViewById(R.id.grid_item_label)) 
        .getText(), Toast.LENGTH_SHORT).show(); 

      } 
     }); 

    } 

} 

mon imageadapter.java:

public class ImageAdapter extends BaseAdapter { 
private Context context; 
private final String[] mobileValues; 
    public ImageAdapter(Context context, String[] mobileValues) { 
    this.context = context; 
    this.mobileValues = mobileValues; 
} 

public View getView(int position, View convertView, ViewGroup parent) { 

    LayoutInflater inflater = (LayoutInflater) context 
     .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

    View gridView; 

    if (convertView == null) { 

     gridView = new View(context); 

     // get layout from list.xml 
     gridView = inflater.inflate(R.layout.list, null); 

     // set value into textview 
     TextView textView = (TextView) gridView 
       .findViewById(R.id.grid_item_label); 
     textView.setText(mobileValues[position]); 

     // set image based on selected text 
     ImageView imageView = (ImageView) gridView 
       .findViewById(R.id.grid_item_image); 

     String mobile = mobileValues[position]; 

     if (mobile.equals("Windows")) { 
      imageView.setImageResource(R.drawable.imggrid); 
     } else if (mobile.equals("iOS")) { 
      imageView.setImageResource(R.drawable.imggrid); 
     } else if (mobile.equals("Blackberry")) { 
      imageView.setImageResource(R.drawable.imggrid); 
     } else { 
      imageView.setImageResource(R.drawable.imggrid); 
     } 

    } else { 
     gridView = (View) convertView; 
    } 

    return gridView; 
} 

@Override 
public int getCount() { 
    return mobileValues.length; 
} 

@Override 
public Object getItem(int position) { 
    return null; 
} 

@Override 
public long getItemId(int position) { 
    return 0; 
} 

}

Je dnt sais comment utiliser ce qui suit dans mon code:

try { 
      URL url = new URL(imageFileURL); 
      URLConnection conn = url.openConnection();     
      HttpURLConnection httpConn = (HttpURLConnection)conn; 
      httpConn.setRequestMethod("GET"); 
      httpConn.connect();    
      if (httpConn.getResponseCode() == HttpURLConnection.HTTP_OK) { 
      InputStream inputStream = httpConn.getInputStream();      
      Bitmap bitmap = BitmapFactory.decodeStream(inputStream); 
      inputStream.close(); 
      img.setImageBitmap(bitmap); 
      } 
      } catch (MalformedURLException e1) { 
      // TODO Auto-generated catch block 
      e1.printStackTrace(); 
      } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
      } 
+0

merci d'avance..quelqu'un d'aide pls –

+0

Quel est le problème exact? Avez-vous des erreurs? Si oui alors pls post logcat. – Shrikant

+0

Allez et essayez avec [** Android - Universal Image loader **] (https://github.com/nostra13/Android-Universal-Image-Loader) –

Répondre

1

Mettre l'image téléchargement du code dans un AsyncTask. Here is the explanation. Exécutez une instance de asynctask dans votre méthode getView, c'est-à-dire pour récupérer une image à chaque fois.

private class DownloadImageTask extends AsyncTask<String, Void, Bitmap> { 
ImageView mImageView; 
public void setImageView(ImageView img) { 
     mImageView = img; 
} 

protected Bitmap doInBackground(String... urls) { 
    return loadImageFromNetwork(urls[0]); 
} 

protected void onPostExecute(Bitmap result) { 
    mImageView.setImageBitmap(result); 
} 

}

Appel task.setImageView(yourImageViewinGrid) avant d'exécuter votre AsyncTask pour le faire savoir où mettre l'image après le téléchargement.

+0

Voir l'exemple de code que j'ai ajouté à mon asnwer .. – Ronnie

+0

merci @ userSeven7s, mais j'ai presque 10 images à l'heure actuelle et le nombre peut augmenter à la mise à jour au serveur.donc pouvez-vous s'il vous plaît me dire comment récupérer toute la photo étant mis sur un dossier spécifique sur le serveur peut être téléchargé et affiché en même temps sur mon application client? J'ai besoin d'incorporer quelques textes avec chaque image comme le nom de l'article.Ceci, sur un clic devrait ouvrir une autre activité.Merci encore –

0

Je dnt sais comment utiliser ce qui suit dans mon code:

ce code téléchargera l'image pour vous, vous pouvez placer dans thread séparé soit AsyncTask ou Thread et définir l'image téléchargée dans le imageview ... simple comme ça. Il y a tellement de nombreux exemples sur le web, vous pouvez google sur

EIDTED

code pour télécharger l'image

public class AsyncFetchImage extends AsyncTask<String, Void, Bitmap>{ 

    private WeakReference<ImageView> imageReference; 
// private WeakReference<Dialog> dialogReferance; 

    public AsyncFetchImage(ImageView imageview) { 
     imageReference = new WeakReference<ImageView>(imageview); 
//  dialogReferance = new WeakReference<Dialog>(dialog); 
    } 

    @Override 
    protected Bitmap doInBackground(String... s) { 

     return downloadImage(s[0]); 
    } 

    private Bitmap downloadImage(String url) { 

     final AndroidHttpClient client = AndroidHttpClient.newInstance("Nixit"); 
     final HttpGet getRequest = new HttpGet(url); 
     try { 

      HttpResponse response = client.execute(getRequest); 
      final int statusCode = response.getStatusLine().getStatusCode(); 

      if(statusCode != HttpStatus.SC_OK){ 
       Log.w("ImageDownloader", "Error " + statusCode + " while retrieving bitmap from " + url); 
       return null; 
      } 
      final HttpEntity entity = response.getEntity(); 
      if(entity != null){ 
       InputStream is = null; 
       try{ 
        is = entity.getContent(); 
        final Bitmap bit = BitmapFactory.decodeStream(is); 
        return bit; 
       }finally{ 
        if(is != null) 
         is.close(); 
        entity.consumeContent(); 
       } 
      } 


     } catch (IOException e) { 
      e.printStackTrace(); 
      return null; 
     } finally{ 
      if(client != null){ 
       client.close(); 
      } 
     } 
     Log.i("Image Fetch","Image Fetch Complete"); 
     return null; 
    } 

    @Override 
    protected void onPostExecute(Bitmap result) { 
     if(isCancelled()){ 
      result = null; 
     } 
     if(imageReference != null){ 
      ImageView imageView = imageReference.get(); 
//   Dialog di = dialogReferance.get(); 
      if (imageView != null) { 
       imageView.setImageBitmap(result); 
//    di.show(); 
      } 

     } 
    } 


} 

Comment utiliser: -

imageView = (ImageView)dialog.findViewById(R.id.imageView1); 

AsyncFetchImage fetchImage = new AsyncFetchImage(imageView); 
fetchImage.execute(url); 

Vous pouvez utilisez ceci dans la méthode getview de l'adaptateur

Espoir qui aident

+0

merci @Nixit Patel..J'ai essayé plusieurs exemples, mais aucun ne fonctionne pour moi..can u montrez-moi comment incorporer cette section de code url dans mes classes mainmenu et imageadapter? cela sera plus utile –

+0

@ ess.crazy ajouté le code dans le poste –

+0

merci @Nixit Patel..mais je ne suis pas capable de configurer ma classe imageadapter.Si cela ne vous dérange pas, dites-moi exactement comment modifier ma classe mainmenu .. vous pouvez modifier la classe mainmenu pour une compréhension claire .. –

0

Pour obtenir l'image, vous devez faire quelque chose comme:

URL new_url = new URL("your url"); 
Bitmap image_bitmap = BitmapFactory.decodeStream(newurl.openConnection() .getInputStream()); ImageView image_view = new ImageView(this); 
image_view.setImageBitmap(image_bitmap); 

Quoi qu'il en soit, il est préférable de télécharger l'image en tâche de fond. Ce que je fais réellement est de créer une vue personnalisée avec une classe interne privée qui étend AsyncTask pour télécharger l'image pour vous.

+0

Merci @Warut Surapat..can tu me montre comment afficher ces images récupérées dans mon gridview? pls éditer le code pour moi –

Questions connexes