簡體   English   中英

如何將onClickListener分別添加到每個ImageView?

[英]How can I add onClickListener to each ImageView separately?

我已經在Android中以編程方式添加了線性布局,並向其中添加了ImageViews。 我使用以下代碼相同。

LinearLayout layout = (LinearLayout)findViewById(R.id.linear1);     
for(int i=0;i<4;i++)
{
    imagev = new ImageView(this);
    imagev.setLayoutParams(new android.view.ViewGroup.LayoutParams(300,150));
    imagev.setMaxHeight(600);
    imagev.setMaxWidth(600);
    layout.addView(imagev);
}

您可以執行以下操作:

myClickListener1 = new View.OnClickListener ...
myClickListener2 ...
myClickListener3 ...
myClickListener4 ...

for(int i=0;i<4;i++)
{
    imagev = new ImageView(this);
    imagev.setLayoutParams(new android.view.ViewGroup.LayoutParams(300,150));
    imagev.setMaxHeight(600);
    imagev.setMaxWidth(600);
    switch(i){
            case 0: imagev.setOnClickListener(myClickListener1);
            break;
            case 1: ...
            ...
    }
    layout.addView(imagev);
}

如果要實現此目的,我將為每個imageview提供一個特定的標簽,然后為每個imageview設置相同的onClickListener。 然后,在onClickListener中,我將檢查單擊的imageview的標記,並根據單擊的imageview進行操作。

    LinearLayout layout = (LinearLayout)findViewById(R.id.linear1);     
    for(int i=0;i<4;i++)
    {
        imagev = new ImageView(this);
        imagev.setLayoutParams(new android.view.ViewGroup.LayoutParams(300,150));
        imagev.setMaxHeight(600);
        imagev.setMaxWidth(600);
        imagev.setTag(i);
        imagev.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                 switch(Integer.valueOf(v.getTag())) {
                      case 0: ...
                              break;
                      case 1: ...
                              break;
                 }
            } 
        layout.addView(imagev);
    }

這樣可以避免必須具有4個不同的onClickListener,並為您提供一些更簡潔的代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM