2011-02-17 116 views
1

那麼,我有16個按鈕。我想找到一種更簡單的方法將它們添加到onTouch偵聽器,我是Android/java新手,所以我不確定哪些方法可行。這是我現在的代碼。Android onTouchListener,更簡單的實現方法

public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main) 

Button btn_main1 = (Button) findViewById(R.id.cmd_main1); 
    Button btn_main2 = (Button) findViewById(R.id.cmd_main2); 
    Button btn_main3 = (Button) findViewById(R.id.cmd_main3); 
    Button btn_main4 = (Button) findViewById(R.id.cmd_main4); 
    Button btn_main5 = (Button) findViewById(R.id.cmd_main5); 
    Button btn_main6 = (Button) findViewById(R.id.cmd_main6); 
    Button btn_main7 = (Button) findViewById(R.id.cmd_main7); 
    Button btn_main8 = (Button) findViewById(R.id.cmd_main8); 
    Button btn_main9 = (Button) findViewById(R.id.cmd_main9); 
    Button btn_main10 = (Button) findViewById(R.id.cmd_main10); 
    Button btn_main11 = (Button) findViewById(R.id.cmd_main11); 
    Button btn_main12 = (Button) findViewById(R.id.cmd_main12); 
    Button btn_main13 = (Button) findViewById(R.id.cmd_main13); 
    Button btn_main14 = (Button) findViewById(R.id.cmd_main14); 
    Button btn_main15 = (Button) findViewById(R.id.cmd_main15); 
    Button btn_main16 = (Button) findViewById(R.id.cmd_main16); 


    btn_main1.setOnTouchListener(tListener1); 
    btn_main2.setOnTouchListener(tListener1); 
    btn_main3.setOnTouchListener(tListener1); 
    btn_main4.setOnTouchListener(tListener1); 
    btn_main5.setOnTouchListener(tListener1); 
    btn_main6.setOnTouchListener(tListener1); 
    btn_main7.setOnTouchListener(tListener1); 
    btn_main8.setOnTouchListener(tListener1); 
    btn_main9.setOnTouchListener(tListener1); 
    btn_main10.setOnTouchListener(tListener1); 
    btn_main11.setOnTouchListener(tListener1); 
    btn_main12.setOnTouchListener(tListener1); 
    btn_main13.setOnTouchListener(tListener1); 
    btn_main14.setOnTouchListener(tListener1); 
    btn_main15.setOnTouchListener(tListener1); 
    btn_main16.setOnTouchListener(tListener1); 
} 

很顯然,這是做一個可怕的方式。我確定有一種方法可以做某種循環,或者將按鈕放在一個數組或其他東西中。任何幫助縮短這一點非常感謝!

+0

你總是在編譯時知道有多少按鈕有?如果是這樣,那麼我認爲我有一個優雅的解決方案來減少冗長。 – Mascarpone 2011-02-17 21:43:28

回答

1

另一種方法是使用代碼而不是XML添加按鈕。

然而,僅僅清理代碼...

int[] buttonIds = new int[]{R.id.cmd_main1, R.id.cmd_main2}; // and so on 

for(int buttonId : buttonIds) { 
    Button b = (Button)findViewById(buttonId); 
    b.setOnTouchListener(tListener1); 
} 

而且,onClickListener可能是更清潔,這取決於你想要的按鈕做什麼。然後,您可以在同樣的XML中指定onClickListener:

<Button android:onClick="myClickHandler" /> 

,並在活動中,添加相應的方法:

class MyActivity extends Activity { 
public void myClickHandler(View target) { 
    // Do stuff 
    } 
} 
+0

用代碼創建按鈕會更乾淨嗎? – Henzl0l 2011-02-17 21:55:10

相關問題