2012-11-14 31 views
1

我有一個簡單的腳本:的Android按鍵循環

int phases = 6; 
    final int max = 8; 
    final TextView[] a = new TextView[(max * phases)]; 
    final Button[] b = new Button[phases]; // creates the buttons to display 
              // the single phases 

    for (int x = 0; x < phases; x++) { 
     b[x] = new Button(this); 
     b[x].setText("yourbutton"); 
     // linL.addView(b[x]); 
     b[x].setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
       if (a[(3)].getVisibility() == 0) { 
        for (int i = 0; i < max; i++) 
         a[i].setVisibility(View.GONE); 
       } else { 
        for (int i = 0; i < max; i++) 
         a[i].setVisibility(View.VISIBLE); 
       } 
      }; 
     }); 
    } 

這基本上檢查,如果一個TextView是可見的,如果它不是那麼使它可見(加上其他全面)。

我現在的問題是,我不希望再重新上相同的文字意見,並再次,我想這取決於按鈕創建的電流回路的x改變看法。

然而,當我嘗試包括這種X,它說,它必須是最後的。

讓我怎麼得到的參數爲上點擊收聽腳本? (我試圖添加它們,但它接着說,我有整個聽衆進行重新編程......這就是爲什麼我問,如果有一個更聰明的方式來做到這一點)

乾杯,克里斯托夫

回答

0

你有2種選擇:

  1. setOnClickListener線之前,你可以聲明另一個變量爲最終決定,您可以指定的值x。然後,你將有認爲它可以在函數內部使用的X值最後一個變量。
  2. 您可以實現自己的類,它實現OnClickListener,你可以添加一個構造函數,得到的X值。

一些一般性說明: 我不知道這是你寫代碼的方式,還是你在這裏寫代碼的時候掩蓋了它。 (Masked,意思是你改變變量名稱,它會更難理解你在做什麼)

所以,如果你掩蓋了它,請不要,它會讓你更難回答你。 如果這是你寫代碼的方式,我真的建議您閱讀有關編碼標準和重要性,有一些文章。您的代碼沒有正確縮進,並且變量的名稱沒有意義。當你與該項目完成後,嘗試在一個月後再次讀取你的代碼,你會看到它是如何努力讓你明白你寫的

+0

的最後一個變量,我感謝工作得很好了很多,很好的代碼不被屏蔽,而是它只是給我看看它是如何工作的,它會盡快讓我輸入我需要使它最終調整的痕跡代碼。爲了測試它的容易,我喜歡用A和B字母,因爲我在打字也不好因此這消除分心時,我必須上下滾動一次又一次地檢查變量拼寫,我得到 – user1497119

+0

我很高興它爲你工作。關於拼寫錯誤,您應該使用帶有intellisense的良好IDE(Eclipse是開發Android應用程序的一個很好的解決方案)。如果你使用的Eclipse,但你不利用智能感知這裏是瞭解它http://stackoverflow.com/q/2943131/1020530的好地方。如果你採用一些編碼標準,一切都會更容易。 – nheimann1

0

如果我承諾正確,你想傳遞參數給你的OnClickListener。我建議實現自己的OnClickListener接口 - 類似rekaszeru的回答here