單選按鈕(RadioButton)——Mars Android開發視頻教程之第一季第十集(重)

##1· 什麼是單選按鈕(RadioButton)? 這樣的按鈕就叫單選按鈕,這裏有兩組單選按鈕; 一組單選按鈕中,只能有一個選項被選中; java

##2· RadioGroup與RadioButton RadioGroup表明組;RadioButton表明單選按鈕項;android

##3· 單選按鈕的使用佈局

<RadioGroup>包圍<RadioButton>,一對<RadioGroup/>表明一組單選按鈕。測試

首先在佈局文件中添加一對組標籤:code

<RadioGroup
        android:id="@+id/radioGroup1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal"><!-- 選項的排列方向 -->
        
    </RadioGroup>

而後在組標籤中添加子標籤:對象

<RadioGroup
        android:id="@+id/radioGroup1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
        
        <RadioButton 
            android:id="@+id/radioButton_A"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="A"/>
        
        <RadioButton 
            android:id="@+id/radioButton_B"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="B"/>
        
    </RadioGroup>

這樣就成功聲明瞭一組單選按鈕。接口

接着在java代碼中獲取對應的對象get

先聲明成員變量:it

private RadioGroup radioGroup;
	private RadioButton radioButton_A;
	private RadioButton radioButton_B;

而後找到它們:io

radioGroup = (RadioGroup) findViewById(R.id.radioGroup1);
        radioButton_A = (RadioButton) findViewById(R.id.radioButton_A);
        radioButton_B = (RadioButton) findViewById(R.id.radioButton_B);

###3.1 單選按鈕的監聽 咱們想知道用戶點擊的是哪個選項,因此最後就須要對其進行監聽。

首先建立監聽類 這裏要注意,若是對組進行監聽,那麼就得導入RadioGourp包中的接口OnCheckedChangeListener:

class RadioGroupCheckedChangeListener implements OnCheckedChangeListener{

		public void onCheckedChanged(RadioGroup group, int checkedId) {
			
		}
    	
    }

最後生成監聽類對象,將監聽器掛接在RadioGroup對象上:

RadioGroupCheckedChangeListener raidoListener = new RadioGroupCheckedChangeListener();
        radioGroup.setOnCheckedChangeListener(raidoListener);

這樣,radioGroup組中的任意選項狀態改變時,就會調用onCheckedChanged(RadioGroup group, int checkedId)方法。

  • group表明狀態改變的選項所在組。
  • checkedId表明狀態改變的選項ID。

如今咱們能夠寫一些打印語句。 例如,打印狀態改變按鈕的內容。那麼咱們要在onCheckedChanged方法中進行實現:

public void onCheckedChanged(RadioGroup group, int checkedId) {
			if(checkedId == radioButton_A.getId()){
				System.out.println("A");
			} else if(checkedId == radioButton_B.getId()) {
				System.out.println("B");
			}
		}

除了對組進行監聽以外,咱們還能夠給單獨一個項進行監聽:

定義一個監聽類,注意,這裏實現的onCheckedChangeListener接口是CompoundButton包中的接口:

class RadioButtonCheckedChangeListener implements CompoundButton.OnCheckedChangeListener{

		public void onCheckedChanged(CompoundButton button, boolean isChecked) {
			
		}
    	
    }

接着,建立監聽類對象,而後將監聽器掛接在要監聽的RadioButton對象上:

RadioButtonCheckedChangeListener  radiotButtonListener = new RadioButtonCheckedChangeListener();
        radioButton_A.setOnCheckedChangeListener(radiotButtonListener);

這樣,當這個對象的狀態改變時就會調用onCheckedChanged(CompoundButton button, boolean isChecked)方法

  • button是被監聽的RadioButton對象;
  • isChecked爲是否選中。

寫個打印語句來測試一下,顯示被監聽按鈕的狀態:

public void onCheckedChanged(CompoundButton button, boolean isChecked) {
			if(isChecked){
				System.out.println(button.getText() + "被選中了");
			} else {
				System.out.println(button.getText() + "沒有被選中");
			}
		}

##4· 疑問 我就在想,單獨監聽一個單選按鈕有什麼用呢? 無非就是,知道這個按鈕是處於選中仍是未選中狀態而已嘛。 而這經過組監聽也徹底能實現啊,當選中的項不是目標項時,就表明它未選中,反之亦然。

##5· 總結

  • 單選按鈕由組(RadioGroup)和項(RadioButton)所構成;
  • 使用的時候,先添加組標籤,而後再往裏面添加子標籤;
  • 一組單選按鈕中只能存在一個選中項;
  • 監聽組(RadioGroup)使用監聽器RadioGroup.OnCheckedChangeListener;
  • 監聽單獨一個項使用CompoundButton.OnCheckedChangeListener

##6· 練習 實現: 兩組單選按鈕 1:A、B 2:C、D 點擊A的時候C也被選中;點擊B的時候也被D選中。

實現:

public void onCheckedChanged(RadioGroup group, int checkedId) {
			if(checkedId == radioButton_A.getId()){
				radioButton_C.setChecked(true);
			} else if(checkedId == radioButton_B.getId()) {
				radioButton_D.setChecked(true);
			}
		}

這個練習的用意應該是讓咱們知道setChecked()這個方法的做用吧。

完畢

相關文章
相關標籤/搜索