2013-08-21 2 views
0

Im essayant d'envoyer mon image cliquée/sélectionné pour une nouvelle activité est ici mon codeObtenir l'image gridview dans une nouvelle activité

public int getCount() { 
    return mThumbIds.length; 
} 
public View getView(final int position, View convertView, ViewGroup parent) { 
     ImageView imageView; 
     if (convertView == null) { // if it's not recycled, initialize some attributes 
      imageView = new ImageView(mContext); 
      imageView.setLayoutParams(new GridView.LayoutParams(85, 85)); 
      imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); 
      imageView.setPadding(8, 8, 8, 8); 
      imageView.setOnClickListener(new OnClickListener() { 

       @Override 
       public void onClick(View v) { 
        // TODO Auto-generated method stub 
        Intent intent = new Intent(mContext,HeroData.class); 
        intent.putExtra("imageID", position); 
        mContext.startActivity(intent); 
       } 
      }); 
     } else { 
      imageView = (ImageView) convertView; 
     } 

     imageView.setImageResource(mThumbIds[position]); 
     return imageView; 

    } 

private Integer[] mThumbIds = { 
     R.drawable.pic1, R.drawable.pic12, 
     R.drawable.pic2, R.drawable.pic13, 
     R.drawable.pic3, R.drawable.pic14, 

}; 

}

et en essayant de le recevoir dans une nouvelle activité

Bundle bdl = getIntent().getExtras(); 
    int index = bdl.getInt("imageID"); 
    ImageView image = (ImageView) findViewById(R.id.imageview); 
    image.setImageResource();//the problem ! how to receive the selected image 

je veux savoir im l'envoi ("imageID", position); comment obtenir l'image sélectionnée

+0

vous devez rendre votre tableau imageList publique statique et y accéder dans votre nouvelle activité .. – Piyush

+0

@PiyushGupta Pourquoi avez-vous besoin de statique, vous pouvez convertir l'image en bytearray et le transmettre en utilisant des intentions. ou faites comme Adrián Rodríguez suggéré ci-dessous. Adrián Rodríguez devrait travailler. – Raghunandan

Répondre

2

Puisque vous envoyez des ressources, vous pouvez envoyer l'ID de ressource au lieu de l'index dont il dispose dans le tableau. Quelque chose comme ceci:

intent.putExtra("imageID", mThumbIds[position]); 
mContext.startActivity(intent); 

Et dans votre activité:

Bundle bdl = getIntent().getExtras(); 
int imageRes = bdl.getInt("imageID"); 
ImageView image = (ImageView) findViewById(R.id.imageview); 
image.setImageResource(imageRes); 

espoir qui aide.

+0

juste raison! : D a changé la ressource d'envoi en identifiant de ressource! –

1

utilisation Comme ça ...

gridView.setOnItemClickListener(new OnItemClickListener() 
    { 

     public void onItemClick(AdapterView<?> parent, View v,int position, long id) 

     { 

      Intent i = new Intent(getApplicationContext(), HeroData.class); 



      i.putExtra("imageID", position); 

      startActivity(i); 


     } 
    }); 

besoin de cliquer pour wright gridview ...

+0

'intent.putExtra (" imageID ", position)' n'est-ce pas la même chose? comment est différent? – Raghunandan

+0

Mettez ceci dans votre MainActivity dans la méthode onCreate. – mur7ay

0

Vous pouvez garder vos resourses étirables dans un autre endroit, par exemple, vous pouvez le faire en ressources, string-tableau

<resources> 

<string-array name="thumbs_imgs"> 
    <item>@drawable/pic1</item> 
    <item>@drawable/pic2</item> 
    <item>@drawable/pic3</item> 
</string-array> 

</resources> 

puis obtenir par l'indice drawable ce que vous avez besoin

TypedArray imgs = getResources().obtainTypedArray(R.array.thumbs_imgs); 
//get resourceid by index 
mImgView1.setImageResource(imgs.getResourceId(i, -1)); 
Questions connexes