2014-03-04 60 views
1

我有一個Linearlayout - totalincome和另一個TableLayout正常測試,它應該出現在總收入下面。當程序運行時,正常情況下將不可見。當用戶點擊「totalincome」時,表格應該顯示。如果用戶點擊「totalincome」,表格應該消失。我試過這個代碼,但它沒有工作。如何通過點擊同一行來使項目可見和不可見?

totalincome.setOnClickListener(new OnClickListener() 
{ 
    @Override 
    public void onClick(View v) 
    { 
     int x =0; 
     // TODO Auto-generated method stub 
     if (x==0) 
     { 
      normalincometable.setVisibility(View.VISIBLE); 
      x=1; 
     } 
     else 
     { 
      normalincometable.setVisibility(View.GONE); 
      x=0; 
     } 
    }); 
} 

從這個代碼,我可以使表中第一次點擊可見的,但它沒有在接下來的點擊消失。有什麼選擇嗎?

回答

1

您已聲明int x = 0;裏面的onClick方法。所以,當onClick被調用時,它將0賦值給「x」。在課堂範圍外聲明它。

+0

明白了。這是愚蠢的錯誤。 7分鐘後,當系統允許我時,我會接受你的回答是正確的。這個和下一個答案都足夠清楚地理解它。 – Shasi

+0

樂於幫助。我們都犯錯誤:) – Sushil

1

因爲您已經在按鈕點擊代碼中定義了x,所以無論何時按鈕點擊它都設置爲0.在按鈕點擊範圍外定義x。

1

試試這個方法:把變量x的按鈕onclick()外或定義X全球

int x =0; 
totalincome.setOnClickListener(new OnClickListener() { 

    @Override 
    public void onClick(View v) { 

     // TODO Auto-generated method stub 
     if (x==0) 
     { 
     normalincometable.setVisibility(View.VISIBLE); 

     x=1; 
     } 
     else 
     { 
      normalincometable.setVisibility(View.GONE); 
           x=0; 
         } 


}); 

} 
0

使用這樣的:

int x =0;  
    totalincome.setOnClickListener(new OnClickListener() { 

        @Override 
        public void onClick(View v) { 

         // TODO Auto-generated method stub 
         if (x==0) 
         { 
         normalincometable.setVisibility(View.VISIBLE); 

         x=1; 
         } 
         else 
         { 
          normalincometable.setVisibility(View.GONE); 
               x=0; 
             } 


       }); 

      } 
4

試試這個:

@Override 
public void onClick(View v) { 
    if(normalincometable.getVisibility() == View.VISIBLE) { 
    normalincometable.setVisibility(View.GONE); 
    } else { 
    normalincometable.setVisibility(View.VISIBLE); 
    } 
} 
+0

你正在改變按鈕的可見性here.correct你的代碼。 –

+0

它使您想要單擊的隱藏線。在我看來,分配一個數字比每次檢查視圖可見性更有效。沒有答案,我在看。 – Shasi

+0

編輯。感謝您指出。 – Neoh

0

試試這個

Boolean isFirstTimeClicked=true; 
totalincome.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 

      if (isFirstTimeClicked) 
      { 
      normalincometable.setVisibility(View.VISIBLE); 
      } 
      else 
      { 
       normalincometable.setVisibility(View.GONE); 

          } 
isFirstTimeClicked=!isFirstTimeClicked; 

    }); 

} 

並在您的代碼中聲明瞭int x = 0;在onClick方法中。所以,當onClick被調用時,它將0賦值給「x」。在課堂範圍外聲明它。

0

最簡單的方法是

button.setVisibility(View.VISIBLE == button.getVisibility() ? View.GONE:View.VISIBLE); 
相關問題