2014-12-27 131 views
0

在我的應用程序中,我以編程方式創建了一個圖像視圖。我動態創建了相同類型的10幅圖像。每當我點擊圖像時,我想將圖像更改爲另一圖像,如果再次按下圖像,它將轉向上一圖像。我爲此寫了代碼。但是每當我點擊特定圖像時,更改就會應用於其他圖像。如何將一個圖像更改爲另一個圖像?

im = new ImageView(this); 
    @Override 
    public void onClick(View v) { 

     boolean flag = true; 



     for (int k=0;k<sheetdetails.size();k++){ 

      if(sheetdetails.get(k).get("SeatNo").equalsIgnoreCase(v.getTag().toString())&&sheetdetails.get(k).get("IsAvailable").equalsIgnoreCase("true")){ 

       if(flag) 
       {  
        im.setImageResource(R.drawable.seat); 
        flag=false; 
       } 
       else 
       { 
        im.setImageResource(R.drawable.selectedseat); 
        flag=true; 
       }    


      } 

      } 


    } 
+0

我沒有看到任何你設置爲不同的圖像。你可以請澄清你的設置 – Shiv

+0

以前它是座位圖像後,點擊它將改變到選定的座位,反之亦然(設置與標誌) –

+0

您設置標誌爲真**每次點擊**。所以,它總是**真**。更好地將該指令移到外面。除此之外(假設你在xml佈局中設置了onClick()),你只聲明** 1 ImageView **,而不是10.並且你不區分哪個**被點擊過。 –

回答

0

此刻程序執行if分支以及else分支,因爲您輸入的方法是flag = true;

if(flag) 
      {  
       im.setImageResource(R.drawable.seat); 
       flag=false; 
      } 
else 
      { 
       im.setImageResource(R.drawable.selectedseat); 
       flag=true; 
      } 

所以你輸入第一個if,那麼你設置的標誌爲false,所以你還要輸入else分支。要麼改變程序的流程,要麼初始化一個臨時變量。

當你這樣做時,if/else結構是不必要的,因爲你每次都輸入。

+0

我的代碼也是這樣的像這樣na ????????????? –

+0

的確,我只是想告訴你這個錯誤/問題,因爲這個if/else結構背後沒有任何意義。如果你需要一個if分支,最好用正確的方式使用一個臨時變量。 – t3s0

+0

那麼我該如何解決我的問題。請您告訴我 –

相關問題