2011-12-14 74 views
0

我有一組按鈕:機器人:設置多個按鈕的選擇的onClick

[Button1] 
[Button2] 
[Button3] 
[Button4] 
[Button5] 
[Button6] 

所有這些都共享相同的onClick方法:

b.setOnClickListener(new OnClickListener() { 

    @Override 
    public void onClick(View v) { 
     Button b = (Button) v; 
     Button comp; 
     int i = b.getId(); 
     selected[i] = !selected[i]; 
     b.setSelected(selected[i]); 
     for (int j = 0; j < 6; j++) { 
      if (i != j) { 
       selected[j] = false; 
       comp = lifestyleButtonArray.get(j); 

       if(comp.isSelected()) 
        comp.setSelected(selected[j]); 
        Log.w(TAG,"[Button] selection for button #"+j+"="+selected[j]); 

      } 
     } 
    } 
}); 

所述的onClick方法的第一部分按預期工作。點擊按鈕時,切換按鈕的「選擇」值以更改按鈕的顏色(在可繪製的xml文件中定義),然後取消選擇所有其他按鈕,以便最多一個按鈕在時間。

選擇部分作品,但按鈕不會重新繪製相應的顏色,所以看來兩個按鈕被選中!

我已經試過無效和requestLayout,但這並沒有幫助。有什麼建議麼?

編輯:給這個一些更多的思考後,要問這裏真正的問題是:

如何更新一個觀點,即不從的onClick方法有何看法?

在我的例子,當我選擇按鈕1我希望能夠刪除按鈕2-6的選擇,但由於按鍵2-6是不會被調用的觀點,他們表現出了正確的選擇的值(它們是未選中),但不要將其UI視圖更新爲「未選中」的顏色!

+1

你爲什麼不讓你的活動實現了onClickListener,再覆蓋一個方法的onClick(視圖v)爲您的所有按鈕,然後就可以在它們之間使用切換開關(v.getId(){情況R.id.btn1 ://TODO....break; case R.id.btn2:.... etc – Houcine 2011-12-14 18:40:29

+0

因爲這是一個更大的活動,它實現了自己的onClick方法來處理另一部分代碼。需要能夠在按鈕之間切換,但我需要能夠設置按鈕的選擇值並重新繪製。 – 2011-12-14 20:35:31

回答

0

設置按鈕的選擇狀態後,你可以稱之爲「無效()」函數上的每個按鈕,以迫使他們在下一週期更新。

相關問題