RadioGroup、RadioButton以及Spinner学习笔记

以下仅为我作为一只工科狗学习Android编程过程中的一些学习笔记,主要提炼出自己在敲代码过程中遇到的一些问题。

学习Android控件对于我这个新手来说还是很困难的,写在谷歌doc里面还是不太好查找,写在这里吧。

1.RadioGrop&RadioButton

1.1布局文件部分

先上xml代码

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:tools="http://schemas.android.com/tools"
 android:orientation="vertical"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:paddingBottom="@dimen/activity_vertical_margin"
 android:paddingLeft="@dimen/activity_horizontal_margin"
 android:paddingRight="@dimen/activity_horizontal_margin"
 android:paddingTop="@dimen/activity_vertical_margin"
 tools:context="com.example.ch05_ex2.Ch05_Activity" >


					<RelativeLayout
	android:layout_width="match_parent"
	android:layout_height="wrap_content" >
	
	  <TextView
	  android:id="@+id/nameTxt"
	  android:text="姓名"
	  android:layout_width="wrap_content"
	  android:layout_height="wrap_content"
  />
 <EditText
   android:id="@+id/inputTxt"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:layout_toRightOf="@id/nameTxt"/>
	
	</RelativeLayout>
	
	<LinearLayout
 android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<RadioGroup
 android:id="@+id/RG"
	android:layout_width="match_parent"
	android:layout_height="wrap_content" >
	
	<RadioButton
	 android:text="O"
	 android:layout_width="wrap_content"
	 android:layout_height="wrap_content"/>
	<RadioButton
	 android:text="A"
	 android:layout_width="wrap_content"
	 android:layout_height="wrap_content"/>
	<RadioButton
	 android:text="B"
	 android:layout_width="wrap_content"
	 android:layout_height="wrap_content"/>
	<RadioButton
	 android:text="AB"
	 android:layout_width="wrap_content"
	 android:layout_height="wrap_content"/>
	
	</RadioGroup>
	
	<TextView
	android:id="@+id/resultText"
	android:layout_width="match_parent"
	android:layout_height="wrap_content"
	android:text="请选择"
	/>
	</LinearLayout>



这里的LinearLayout属于嵌套的一部分,整个的main.xml应该是这样的。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >

    <LinearLayout 
        
        ></LinearLayout>
    
    <RelativeLayout 
        
        ></RelativeLayout>
    
</LinearLayout>
xml文件里面只有Layout套着Layout,RadioGroup套着RadioButton,没有说RadioButton可以和Layout并列的。新手的错误,汗、、、、

1.2 Java代码部分

package com.example.ch05_ex2;

import android.app.Activity;
import android.os.Bundle;
import android.text.Editable;
import android.view.View;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.RadioGroup.OnCheckedChangeListener;
import android.widget.TextView;

public class Ch05_Activity extends Activity {
	private TextView txtResult;
	private RadioGroup RG;
	private EditText inputTxt;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		inputTxt = (EditText) findViewById(R.id.inputTxt);
		txtResult = (TextView) findViewById(R.id.resultText);
		RG  = (RadioGroup) findViewById(R.id.RG);
		
		RG.setOnCheckedChangeListener(new groupListener());
		
	}

	class groupListener implements OnCheckedChangeListener{

		@Override
		public void onCheckedChanged(RadioGroup group, int checkedId) {
			String sel;
			String name;
			RadioButton ButtonSel = (RadioButton) findViewById(checkedId);
			name =  inputTxt.getText().toString();
			sel = ButtonSel.getText().toString();
			
			txtResult.setText(name+"你的血型为"+sel+"型");
		}
		
	}
	
}
只需要记住:RadioGroup点击时调用的方法是setOnCheckedChangeListener,绑定的对象是 OnCheckedChangeListener 这个接口的一个实现。

有时候Eclipse总是不会提示这个方法,而且好像OnCheckedListener在多个包里面都有,具体导入哪个包,不同的包里面又会是哪些实现,需要总结下。

总之这里的是

void android. widget. RadioGroup.setOnCheckedChangeListener( OnCheckedChangeListener listener)

2.Spinner控件

2.1 main.xml文件

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >
	<RelativeLayout
	    android:layout_width="match_parent"
	    android:layout_height="wrap_content">
	    
	    <TextView
	        android:id="@+id/nameText"
	        android:text="姓名"
	        android:layout_width="wrap_content"
	        android:layout_height="wrap_content"
	        android:textSize="20dp"
	        />
	    <EditText
	        android:id="@+id/editText"
	        android:layout_toRightOf="@id/nameText"
	        android:layout_toEndOf="@id/nameText"
	        android:layout_width="match_parent"
	        android:layout_height="wrap_content"
	        android:hint="注意EditText的match_parent是否把前一个TextView挤掉了"
	    	/>
	    
	  </RelativeLayout>
	    

	  <RelativeLayout 
	      android:layout_width="match_parent" 
	      android:layout_height="wrap_content"
	      >

	    <TextView 
	        android:id="@+id/labelText"
	        android:text="学历"
	        android:textSize="20sp"
	        android:layout_width="wrap_content"
	        android:layout_height="wrap_content"/>
	    
	    <Spinner 
	        android:id="@+id/ex3spinner"
	        android:layout_height="wrap_content"
	        android:layout_width="wrap_content"
	        android:layout_toRightOf="@id/labelText"
	        android:layout_toEndOf="@id/labelText"
	        />

	    <TextView
	        android:id="@+id/txtResult"
	        android:layout_width="wrap_content"
	        android:layout_height="wrap_content"
	        android:layout_alignParentLeft="true"
	        android:layout_alignParentStart="true"
	        android:layout_below="@+id/ex3spinner"
	        android:gravity="center_vertical|center_horizontal"
	        android:text="这里将会显示您的选择" />
	    
	  </RelativeLayout>
	
    
</LinearLayout>



2.2 string.xml文件

考虑到本地化 的情况,将选项列表设置在项目的<res/values/strings.xml>中,再由程序通过资源文件获取列表数组来使用。

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string name="app_name">Ch05_ex3</string>
    <string name="hello_world">Hello world!</string>
    <string name="action_settings">Settings</string>
    <string-array name = "scholar">
        <item >高中</item>
        <item >大学</item>
        <item >硕士</item>
        <item >博士</item>	
    </string-array>

</resources>


2.3 Java代码

package com.example.ch05_ex3;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;

public class Ch05_ex3_Activity extends Activity {
	private EditText editText;
	private Spinner ex03Spinner;
	private TextView txtResult;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		editText = (EditText) findViewById(R.id.editText);
		ex03Spinner = (Spinner) findViewById(R.id.ex3spinner);		
		txtResult = (TextView) findViewById(R.id.txtResult);
		
		//创建ArrayAdapter,数据源是string.xml里面的scholar数组
		ArrayAdapter<CharSequence> myAdapter = ArrayAdapter.createFromResource(this, R.array.scholar, android.R.layout.simple_spinner_item);
		//设置myAdapter显示的格式
		//待会记得把这个格式改一下看看还有别的什么样式
//simple_spinner_dropdown_item只是最简单的样式,不喜欢的改别的试试
		myAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
		//设置Spinner的数据源
		ex03Spinner.setAdapter(myAdapter);
		//为spinner组件的ItemSelected事件绑定监听器
		ex03Spinner.setOnItemSelectedListener(new myListener());
		
	}
	
	class myListener implements OnItemSelectedListener{

		@Override
		public void onItemSelected(AdapterView<?> suibian, View v, int position, long id) {
			String inputname;
			String sel;
			inputname = editText.getText().toString();
			sel = suibian.getSelectedItem().toString();
			txtResult.setText(inputname+"的学历为"+sel);
			
		}

		@Override
		public void onNothingSelected(AdapterView<?> hehe) {
			txtResult.setText("什么都没有选中!");
			
		}
	}
	
}
需要记住:Spinner的使用需要先new一个ArrayAdapter来提供数据源(createFromResource)以及规定最终的显示格式( setDropDownViewResource)

最后再使用setAdapter绑定,还有别忘了添加一个监听器。



以上就是关于RadioGroup、RadioButton以及Spinner这些控件的学习记录,所有代码直接拷进eclipse就可以用了。

完事。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值