2012-11-26 80 views
1

我想通過代碼創建一個Button對象的子類的數組。數組的子類和onClick()

public class MyButton extends Button { 
    private Context ctx; 
    private int status; 
    public MyButton(Context context) { 
     super(context); 
     ctx = context; 
     status = 0; 
    } 

    private click() { 
     status = 1; 
     // OTHER CODE THAT NEEDS TO STAY HERE 
    } 
} 

在主要活動我這樣做:

public class myActivity extends Activity { 
    private MyButton[] myButtons = new MyButton[100]; 

    @Override 
    public onCreate(Bundle si) { 
     super.onCreate(si); 
     createButtons(); 
    } 

    private void createButtons() { 
     for (int w=0; w<100; w++) { 
      myButtons[w] = new MyButton(myActivity.this); 
      myButtons[w].setOnClickListener(new View.onClickListener() { 
        public void onClick(View v) { 
        // ... (A) 
        } 
      }); 
     } 
    } 
} 

現在我想點擊()內myButton的方法在每次單擊按鈕時運行。 看起來很明顯,但它不在我眼前。

如果我將click()方法公開並直接從(A)運行,則會出現錯誤,因爲myButtons [w] .click()不是靜態的,無法從此處運行。

與此同時,我無法理解將代碼放入MyButton類中的位置,以攔截點擊並從那裏運行click()。我應該重寫onClick嗎?或者我應該重寫onClickListener?或者我還應該做什麼?

如何在單擊myButtons []對象之一時單擊運行click()?

感謝您的幫助。

回答

1

您可以添加:

View.onClickListener onclick = new View.onClickListener() { 
        public void onClick(View v) { 
        ((MyButton)v).click(); 
        //since v should be instance of MyButton 
        } 
      }; 

你的活動 然後使用:

myButtons[w].setOnClickListener(onclick); 
//one instance of onclick is enough, there is no need to create it for every button 

in createButto NS()

可是......爲什麼,爲什麼我們在Android中有ListView控件按鈕的排列...

+0

謝謝你,我想我應該去學習的ListView然後:) –

2

你可以施放View v你的聽衆得到了MyButton並在其上調用click

private void createButtons() { 
    View.OnClickListener listener = new View.onClickListener() { 
     public void onClick(View v) { 
      ((MyButton) v).click(); 
     } 
    }; 
    for (int w=0; w<100; w++) { 
     myButtons[w] = new MyButton(myActivity.this); 
     myButtons[w].setOnClickListener(listener); 
    } 
}