RadioGroup、RadioButton以及Spinner学习笔记

来源:互联网 发布:求众数java 编辑:程序博客网 时间:2024/06/07 01:47

以下仅为我作为一只工科狗学习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" ><RelativeLayoutandroid: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><TextViewandroid: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;@Overrideprotected 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{@Overridepublic 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;@Overrideprotected 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{@Overridepublic 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);}@Overridepublic void onNothingSelected(AdapterView<?> hehe) {txtResult.setText("什么都没有选中!");}}}
需要记住:Spinner的使用需要先new一个ArrayAdapter来提供数据源(createFromResource)以及规定最终的显示格式(setDropDownViewResource)

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



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

完事。


0 0
原创粉丝点击