2011-07-13 2 views
0

Je le code suivant j'essaie d'afficher l'image qui est sélectionnée dans la galerie.Mais je reçois une image android par défaut et non l'image que j'ai sauvé.Qu'est-ce que je fais mal comment résoudre ce problème ..Galerie Android afficher l'image sélectionné

package HGallery.com; 

import HGallery.com.R; 
import HGallery.com.HGalleryActivity.ImageAdapter; 
import android.app.Activity; 
import android.os.Bundle; 

import android.content.Context; 
import android.content.res.TypedArray; 
import android.graphics.drawable.Drawable; 

import android.view.View; 
import android.view.ViewGroup; 
import android.widget.AdapterView; 
import android.widget.AdapterView.OnItemClickListener; 
import android.widget.AdapterView.OnItemSelectedListener; 
import android.widget.BaseAdapter; 
import android.widget.Gallery; 
import android.widget.ImageView; 
import android.widget.Toast; 

public class HGalleryActivity extends Activity { 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    final ImageView iv=(ImageView) findViewById(R.id.imageView1); 
    iv.setVisibility(View.INVISIBLE); 



    Gallery g = (Gallery) findViewById(R.id.gallery); 
    g.setAdapter(new ImageAdapter(this)); 

    g.setOnItemClickListener(new OnItemClickListener() { 
     public void onItemClick(AdapterView parent, View v, int position, long id) { 
      //Toast.makeText(HGalleryActivity.this, "here", Toast.LENGTH_SHORT).show(); 
      //Toast.makeText(HGalleryActivity.this, "" + position, Toast.LENGTH_SHORT).show(); 

      iv.setVisibility(View.VISIBLE); 
      Drawable d=getResources().getDrawable(R.drawable.icon); 
      //Toast.makeText(HGalleryActivity.this, ""+d, Toast.LENGTH_SHORT).show(); 
      iv.setImageDrawable(d);  


     } 
    }); 



} 
public class ImageAdapter extends BaseAdapter { 
    int mGalleryItemBackground; 
    private Context mContext; 

    private Integer[] mImageIds = { 
      R.drawable.sample_1, 
      R.drawable.sample_2, 
      R.drawable.sample_3 

    }; 

    public ImageAdapter(Context c) { 
     mContext = c; 
     TypedArray a = obtainStyledAttributes(R.styleable.HelloGallery); 
     mGalleryItemBackground = a.getResourceId(
       R.styleable.HelloGallery_android_galleryItemBackground, 0); 
     a.recycle(); 
    } 

    public int getCount() { 
     return mImageIds.length; 
    } 

    public Object getItem(int position) { 
     return position; 
    } 

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

    public View getView(int position, View convertView, ViewGroup parent) { 
     ImageView i = new ImageView(mContext); 

     i.setImageResource(mImageIds[position]); 
     i.setLayoutParams(new Gallery.LayoutParams(150, 100)); 
     i.setScaleType(ImageView.ScaleType.FIT_XY); 
     i.setBackgroundResource(mGalleryItemBackground); 

     return i; 
    } 

/* public View getView(int arg0, View arg1, ViewGroup arg2) { 
     // TODO Auto-generated method stub 
     return null; 
    }*/ 
} 
} 

main.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
> 
<TextView 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:text="@string/hello" 
/> 
    <Gallery xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/gallery" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
/> 
<ImageView android:id="@+id/imageView1" android:layout_width="320px" android:layout_height="250px"></ImageView> 
<!-- <ImageView android:layout_width="wrap_content" android:id="@+id/imageView2" android:layout_height="wrap_content" android:src="@drawable/icon"></ImageView>--> 

+0

Vous ne savez pas si cela est lié, mais votre méthode onItemClick ne fait pas référence à l'élément spécifique cliqué. Il ne fait référence qu'à une seule image dans le dossier dessinable, quelle que soit l'image appelée "icône". – AlbeyAmakiir

+0

icône est celui qui est availble par défaut droit.Mettez-moi de mettre la question de cette façon onclcik comment puis-je peupler la vue de l'image avec l'image sélectionnée actuellement – Rajeev

Répondre

0

la méthode dans votre ImageAdapter appelé public Object getItem(int position) doit être modifié pour renvoyer leappropriéen utilisant l'argument position. Ensuite, à l'intérieur onItemClick, vous pouvez appeler parent.getItemAtPosition(position) pour obtenir l'ID de ressource.

Si vous souhaitez utiliser cette méthode pour des éléments autres que les ID, vous pouvez écrire votre propre méthode get (que j'appellerais getResourceId) et appeler le ((ImageAdapter)parent.getAdapter()).getResourceId(position)).

+0

Salut pourriez-vous me montrer le code de la première implémentation que vous avez dit. – Rajeev

+0

C'est très simple. Remplacez 'return position;' par 'return mImageIds [position];' et changez le type de retour (car il ne fait pas partie de la signature de la méthode, bien que vous puissiez le laisser comme objet, et juste lancer le résultat). Dans 'onItemClick', vous modifiez la ligne en' Drawable d = getResources(). GetDrawable (parent.getItemAtPosition (position)); ' – AlbeyAmakiir

0

Veuillez suivre ce lien Galley Best Example. J'espère que cela vous sera utile ...

+0

Merci ................. .... – Rajeev

+0

Salut Rajeev plz upvote ma réponse si utile ..... – Arun

Questions connexes