2011-05-13 5 views
0

J'ai une image dynamique de l'image de la caméra, mon problème est que je veux mettre une coche sur l'image que je sélectionne. Aidez-moi, s'il vous plaît.Comment faire pour définir imageview sur imageview?

@Override 
protected void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.headshotallphoto); 
    dbHeadshot = new DataHelperHeadshot(this); 

    DisplayMetrics displaymetrics = new DisplayMetrics();  
    getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);  
    ht = displaymetrics.heightPixels;  
    wt = displaymetrics.widthPixels;   

    GridView imagegrid = (GridView) findViewById(R.id.PhoneImageGrid); 
    imagegrid.setAdapter(new ImageAdapter(getApplicationContext(),bmp)); 
    imagegrid.setOnItemClickListener(this); 
} 

public class ImageAdapter extends BaseAdapter 
{ 
    private Context mContext; 
    private Bitmap[] mImageArray; 

    public ImageAdapter(Context c, Bitmap[] imgArray) 
    { 
      mContext = c; 
      mImageArray = imgArray; 

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

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

    public View getView(int position,View convertView,ViewGroup parent) 
    { 
     System.gc(); 
     ImageView i = null ;//= new ImageView(mContext.getApplicationContext()); 

     if (convertView == null) 
     {    
      i = new ImageView(mContext); 
      i.setLayoutParams(new GridView.LayoutParams(92,92)); 
      i.setScaleType(ImageView.ScaleType.CENTER_CROP); 
      i.setPadding(8, 8, 8, 8); 
      i.setImageBitmap(mImageArray[position]);    
     } 
     else 
      i = (ImageView) convertView;   
     return i; 
    } 
} 

public Bitmap decodeFile(String filePath) 
{ 
    BitmapFactory.Options o = new BitmapFactory.Options(); 
    o.inJustDecodeBounds = true; 
    BitmapFactory.decodeFile(filePath, o); 

    // The new size we want to scale to 
    final int REQUIRED_SIZE = 100; 
    final int H = 50; 

    // Find the correct scale value. It should be the power of 2. 
    int width_tmp = o.outWidth, height_tmp = o.outHeight; 
    int scale = 1; 
    while (true) { 
     if (width_tmp < REQUIRED_SIZE && height_tmp < H) 
      break; 
     width_tmp /= 2; 
     height_tmp /= 2; 
     scale *= 2; 
    } 
    // Decode with inSampleSize 
    BitmapFactory.Options o2 = new BitmapFactory.Options(); 
    o2.inSampleSize = scale;   
    bitmap = BitmapFactory.decodeFile(filePath, o2); 
    return bitmap; 
} 

public void onItemClick(AdapterView<?> a, View v, int position, long id) 
{ 
    ImageView tickmark = new ImageView(this); 
    tickmark.setBackgroundResource(R.drawable.imgredselectmark); 
} 

Répondre

2

Utiliser la disposition du cadre:

<FrameLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:orientation="vertical" 
     android:padding="5dip"> 
     <ImageView 
    android:id="@+id/image_check" 
      android:orientation="vertical" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
      android:src="@drawable/tick"/> 
       <ImageView 
       android:id="@+id/imageview" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:src="@drawable/image"> 

Dans GridView

gridview.setOnItemClickListener(new OnItemClickListener(){ 

    @Override 
    public void onItemClick(AdapterView<?> parent, final View view, final int position, 
       long id) { 
      view.setOnClickListener(new View.OnClickListener(){ 

@Override 
public void onClick(View v) { 
// TODO Auto-generated method stub 
if(view.findViewById(R.id.image_check).getVisibility==ImageView.VISIBLE) 
    { 
view.findViewById(R.id.image_check).setVisibility(ImageView.VISIBLE) 
    } 
    else 
    { 
view.findViewById(R.id.image_check).setVisibility(ImageView.GONE) 
    } 

} 
} 
}); 
+0

merci jaydeep pour votre aide, mais je veux mettre une coche sur l'image sélectionnée à partir de la vue de la grille. Et je ne sais pas comment mettre une coche sur l'image sélectionnée. S'il vous plaît aider j'ai besoin de le faire d'urgence – Monali

+0

merci ,, mais ce code ne m'a pas aidé – Monali

+0

Pas de problème ... aidera quelqu'un d'autre :) –

1

Vous pouvez utiliser la disposition relative pour les deux images afin que les deux peuvent afficher un même lieu et cliquez ensuite vous pouvez définir des images de tiques de visibilité.

+0

Je l'ai fait comme u dit, mais à chaque fois que je clique sur une coche d'image est réglée sur la dernière image uniquement. Pourriez-vous m'aider avec l'exemple de code. – Monali

+0

vous pouvez utiliser l'identifiant de position afin que la position définie cocher les images. – Nikhil

+0

pourrait m'aider pls avec l'exemple de code ... Merci – Monali

Questions connexes