2012-01-08 54 views
1

問題:我有一個300-400的圖像瀏覽類。該類實現View.onClickListener。我可以把圖像放在某種數組中嗎? 的imageviews設置了這樣的事情Android imageview onclick若干視圖

ImageView IM1 = new ImageView(this); 
IM1.setImageResource(R.drawable.have_fun); 

,我不能瞭解如何在onclick的類使用這些。我通常使用getId,但這些沒有id,因爲他們不在xml中。

回答

0

例如,如果IM1是那麼你的ImageView:

IM1.setOnTouchListener(new View.OnTouchListener(){ 
    public boolean onTouch(View v, MotionEvent event){ 
     /*your code here*/ 
     return true; 
    } 
}); 

或者,如果你只想處理的onClick,然後

IM1.setOnClickListener(new View.OnClickListener(){ 
    public void onClick(View v){ 
     /*your code here*/ 
    } 
}); 

不同的是,onTouch事件也可以辦理「招「和」拖動「動作。 onTouch在您的手指放在ImageView上時調用。 onClick - 只有一次點擊。

或者你可以創建一個實現接口OnClickListener,例如另一個類:

public class TouchController implements OnClickListener{ 

    /*any code that you need*/ 

    public void onClick(View v){ 
     /*your code*/ 
    } 
} 

然後

TouchController controller = new TouchController(); 
IM1.setOnClickListener(controller); 
+1

也就是說onTouch,他想要的onClick。 – Dante 2012-01-08 13:36:45

+0

onClick和onTouch是一樣的嗎? – Hello 2012-01-08 13:38:21

+0

好吧,但沒有任何更簡單的方法來編寫代碼,然後爲每個圖像寫一個onclick並設置每個圖像視圖由'ImageView IM1 = new ImageView(this); IM1.setImageResource(R.drawable.have_fun);'?不能使用工具onclick ..? – Hello 2012-01-08 13:44:10

1
ArrayList<ImageView> imageViews = new ArrayList<ImageView>(); 
imageViews.add(IM1); 
// add others ... 
for(ImageView imgView : imageViews){ 
    IM1.setOnClickListener(this); 
} 

而且在onclick方法,你可以用你的ImageViews比較視圖V決定要做什麼。

public void onClick(View v){ 
    if((ImageView)v == IM1){ 
     // do something 
    } 
} 
0

您可以使用視圖標籤。

設置一個整數標籤爲ImageView的

ImageView IM1 = new ImageView(this); 
IM1.setImageResource(R.drawable.have_fun); 
IM1.setTag(1); 

和onClickListener,你必須參考單擊該視圖,您可以決定使用

int imageClicked = (int) clickedView.getTag(); 

比較imageClicked點擊該圖片知道哪個圖像被點擊。

+0

好,可以做這樣的事情在的onclick如果想換公共無效的onClick(視圖v){ \t開關(v.getTag) \t} \t} – Hello 2012-01-08 14:17:37

+0

是的,你可以做到這一點:),但你可能必須將其轉換爲整數。 – 2012-01-08 16:50:14

0

當您創建圖像,你可以設置動態的ID:

for (int i = 0; i < listImages.size(); i++) { 
     final ImageView image = listImages.get(i); 
     image.setImageResource(R.drawable.have_fun); 
     image.setId(i); 
    } 

然後在您的onClick方法你可以這樣做:

OnClickListener onClick = new OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     switch (v.getId()) { 

     } 
    } 
};