2011-06-15 42 views
8

Ben setImageResource(R.drawable.icon1) kullanarak bir ImageView için bir görüntü oluşturdu. getImageResource() Android. Mümkün mü?

Şimdi benim gereksinimi bir ImageView için belirlenen ve bazı işleme yapmak olduğunu görüntü ne olduğunu bulmaktır.

if (imageView.getImageResource() == R.drawable.icon1) { 
    //do some processing 
else if (imageView.getImageResource() == R.drawable.icon2) { 
    //do somethign else 
else 
//display 

yüzden (AFAIK, öyle değil) ve bunları yapmazsa nasıl kaynaklar bir için ayarlanmış olan şeyin bir takip etmek için bir yöntem olup olmadığını bilmek istiyorum

gibi ImageView.

Teşekkürler. Sana.

+0

Neden kendiniz yapmak değil sadece? – Yuliy

+0

Ne aktarmak istediğinizi anlamadım. Açıklayabilir misin. Bunu ayarlamak Joe önerdiği gibi – Sana

+0

Ben sadece bazı başka yerde imageview içine ayarlamak görüntünün kimliğini saklamak öneriyorum. – Yuliy

cevap

6

Sen bir tamsayı koymak çünkü eğer gelmezsen bir tamsayı elde edebiliyoruz olduğunu varsayıyoruz ve bu değil nasıl setImageResource() çalışma biçimi. Bakınız ImageView#setImageResource(). Bu senin için sadece bir kolaylık yöntemidir: Drawable kaynak yukarı bakıyor Android perde arkasında ne yaptığını, (çoğu durumda, bu bir BitmapDrawable, ama herhangi bir tür olabilir) ve sonra bir şekilde ImageView bu kaynağı uygulayarak Bitmap nesnesi (ör., Yalnızca resim verileri) - orijinal "kaynak kimliğinin" daha önce ne olduğu hakkında bir fikri yoktur).

En iyi çözüm kullandığınız son kaynak id takip olacak:

imageView.setImageResource(R.drawable.image1); 
this.mLastResourceId = R.drawable.image1; 
// ... 

// Later, when checking the resource: 
if (this.mLastResourceId == R.drawable.image1) { 
    // Do something 
} 
-1

Sen Paketi kullanmak ve ihtiyacınız ne olursa olsun özelliklerini ayarlamak gerekir.

Intent i = new Intent();  
Bundle extras = new Bundle(); 
     i.putExtra("prop", "value"); 
+0

Huh? Bunun yerine 'imageView.setTag (Object)' yöntemini düşünmelisiniz. – dmon

0

diğer alternatif mümkünse ImageView alt sınıf ve geçersiz kılınmış bir setImageResource içinde tamsayı deposu olacağını() .

public class MyImageView extends ImageView { 
    int rememberId = -1; 
    @override void setImageResource(int resId){ 
    rememberId = resId; 
    } 
    int getMyResId(){ 
    return rememberId; 
    } 
} 
0
package com.widget; 

import android.content.Context; 
import android.util.AttributeSet; 
import android.widget.ImageButton; 

/** 
* custom star type imagebutton that can be obtain the background image resource 
* id. 
* 
* </p> your layout xml resource might be like the following code: <br> 
* <view class="com.widget.StarButton" <br> 
*  android:id="@+id/starButton" <br> 
*  android:layout_width="wrap_content" <br> 
*  android:layout_height="wrap_content" <br> 
*  android:background="@android:color/background_light" <br> 
*  android:paddingTop="10dp" <br> 
*  android:src="@drawable/star" /> <br> 
* 
* @author Jeffen 
* 
*/ 
public class StarButton extends ImageButton { 
private int mLastResourceId = -1; 

public StarButton(Context context) { 
    super(context); 
} 

public StarButton(Context context, AttributeSet attrs) { 
    this(context, attrs, android.R.attr.imageButtonStyle); 
} 

public StarButton(Context context, AttributeSet attrs, int defStyle) { 
    super(context, attrs, defStyle); 
    setFocusable(true); 
} 

/** 
* set image resource and sync image resource id. 
*/ 
@Override 
public void setImageResource(int resId) { 
    super.setImageResource(resId); 

    setImageResourceId(resId); 
} 

public int getImageResourceId() { 
    return mLastResourceId; 
} 

public void setImageResourceId(int resId) { 
    mLastResourceId = resId; 
} 

} 
5

aşağıdaki gibi etiket özelliğini kullanmak mümkün olmalıdır: Ayarı yapıyor biri iseniz

imageView.setImageResource(R.drawable.icon1); 
imageView.setTag(Integer.valueOf(R.drawable.icon1)); 

// later 

int drawable = (Integer) imageView.getTag(); 

switch(drawable) { 

    case R.drawable.icon1: 
     // do_something.... 
     break; 

    case R.drawable.icon2: 
     // do_something.... 
     break; 

    ... 
} 
+1

Doğru cevap budur –