RadioGroup:这个类用于创建一组按钮之间相互排斥的单选按钮组,在同一个单选按钮组中勾选一个按钮则会取消改组中其它已经勾选的状态。
以上图为例,其xml代码如下:
<?xmlversion="1.0"encoding="utf-8"?>
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<ScrollView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
></ScrollView>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="RadioDemo"/>
<RadioGroup
android:id="@+id/sexRg"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:checkedButton="@+id/woman"
>
<RadioButton
android:id="@id/woman"
android:text="女"
/>
<RadioButton
android:id="@+id/man"
android:text="男"
/>
</RadioGroup>
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="addRadioButton"
android:id="@+id/appendRadio"
/>
</LinearLayout>
</LinearLayout>
其Java代码如下:
packagecn.csdn.android.utext;
importandroid.app.Activity;
importandroid.os.Bundle;
importandroid.util.Log;
importandroid.view.View;
importandroid.view.View.OnClickListener;
importandroid.widget.Button;
importandroid.widget.RadioButton;
importandroid.widget.RadioGroup;
importandroid.widget.RadioGroup.OnCheckedChangeListener;
publicclassUtest3ActivityextendsActivityimplementsOnCheckedChangeListener{
RadioGrouprg=null;
privatestaticfinalStringTAG="TAG";
Buttonbtn=null;
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.radio);
findViews();
rg.check(R.id.man);//设定某个选项被选中
//获取当前选项组中被选中的选项的id
intcheckedId=rg.getCheckedRadioButtonId();
RadioButtonrb=(RadioButton)this.findViewById(checkedId);
Log.i(TAG,rb.getText().toString());
}
privatevoidfindViews(){
rg=(RadioGroup)this.findViewById(R.id.sexRg);
//注册监听器
rg.setOnCheckedChangeListener(this);
btn=(Button)this.findViewById(R.id.appendRadio);
btn.setOnClickListener(newOnClickListener(){
@Override
publicvoidonClick(Viewv){
//创建radioButton对象
RadioButtonnewRb=newRadioButton(Utest3Activity.this);
newRb.append("人妖");
newRb.setId(100);
//添加到RadioGroup中
rg.addView(newRb);
}
});
}
@Override
publicvoidonCheckedChanged(RadioGroupgroup,intcheckedId){
if(group.getId()==R.id.sexRg){
RadioButtonrb=(RadioButton)this.findViewById(checkedId);
Log.i(TAG,rb.getText().toString());
}
}
}
CheckBox:复选框是一种双状态按钮的特殊类型,可以选中或者不选中,如下图所示
其中xml代码如下:
<?xmlversion="1.0"encoding="utf-8"?>
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="爱好"
android:textSize="20dp"/>
<TableLayout
android:id="@+id/tableLayout"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:stretchColumns="*"
>
<TableRow>
<CheckBox
android:id="@+id/cb1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="游泳"/>
<CheckBox
android:id="@+id/cb2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="武术"/>
</TableRow>
<TableRow>
<CheckBox
android:id="@+id/cb3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="健美操"/>
<CheckBox
android:id="@+id/cb4"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="篮球"/>
</TableRow>
</TableLayout>
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/submit"
/>
</LinearLayout>
Java代码如下:
packagecn.csdn.android.utext;
importjava.util.ArrayList;
importandroid.app.Activity;
importandroid.os.Bundle;
importandroid.util.Log;
importandroid.view.View;
importandroid.view.View.OnClickListener;
importandroid.widget.Button;
importandroid.widget.CheckBox;
importandroid.widget.CompoundButton;
importandroid.widget.CompoundButton.OnCheckedChangeListener;
publicclassCheckBoxDemoextendsActivityimplementsOnCheckedChangeListener{
privateCheckBoxcb1,cb2,cb3,cb4;
privateButtonbtn;
privateArrayList<CheckBox>list=newArrayList<CheckBox>();
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.checkbox);
findViews();
}
privatevoidfindViews(){
cb1=(CheckBox)this.findViewById(R.id.cb1);
cb2=(CheckBox)this.findViewById(R.id.cb2);
cb3=(CheckBox)this.findViewById(R.id.cb3);
cb4=(CheckBox)this.findViewById(R.id.cb4);
list.add(cb1);
list.add(cb2);
list.add(cb3);
list.add(cb4);
for(CheckBoxcb:list){
//需要监听器对象,this是当前类实例,当前类实现了了监听器接口;所以this可以当作一个监听器对象放入其中
cb.setOnCheckedChangeListener(this);
}
btn=(Button)this.findViewById(R.id.submit);
btn.setOnClickListener(newOnClickListener(){
@Override
publicvoidonClick(Viewv){
Stringfav="";
for(CheckBoxcb:list){
fav+=cb.getText()+",";
}
Log.i("TAG",fav);
}
});
}
//覆盖CompoundButton.OnCheckChangeListener接口的抽象方法
publicvoidonCheckedChanged(CompoundButtonbuttonView,booleanisChecked){
Log.i("TAG",buttonView.getText().toString());
}
}
ListView:通过滚动条查看的视图列表,
1.ListVeiw用来展示列表的View。
2.适配器用来把数据映射到ListView上的中介。
3.数据具体的将被映射的字符串,图片,或者基本组件。
根据列表的适配器类型,列表分为三种,
ArrayAdapter,
SimpleAdapter和
SimpleCursorAdapter
其中以ArrayAdapter最为简单,只能展示一行字。SimpleAdapter有最好的扩充性,可以自定义出各种效果。SimpleCursorAdapter可以认为是SimpleAdapter对数据库的简单结合,可以方面的把数据库的内容以列表的形式展示出来。
如下图所示:
其xml代码如下:
<?xmlversion="1.0"encoding="utf-8"?>
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="名单"/>
<ListView
android:id="@+id/nameList"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
</ListView>
</LinearLayout>
Java代码如下:
packagecn.csdn.android.utext;
importandroid.app.ListActivity;
importandroid.os.Bundle;
importandroid.util.Log;
importandroid.view.View;
importandroid.widget.AdapterView;
importandroid.widget.ArrayAdapter;
importandroid.widget.ListView;
publicclassListActivityDemoextendsListActivity{
String[]names={"张三","李四","王五","老李","八戒"};
@Override
protectedvoidonCreate(BundlesavedInstanceState){
//TODOAuto-generatedmethodstub
super.onCreate(savedInstanceState);
ArrayAdapteradapter=newArrayAdapter(this,
android.R.layout.simple_list_item_1,names);
this.setListAdapter(adapter);
}
@Override
protectedvoidonListItemClick(ListViewl,Viewv,intposition,longid){
//TODOAuto-generatedmethodstub
super.onListItemClick(l,v,position,id);
Log.i("TAG",names[position]+"positon="+String.valueOf(position)
+"row_id="+String.valueOf(id));
}
}
Spinner:
下拉列表(Spinner)是一个每次只能选择所有项中一项的部件。它的项来自于与之相关联的适配器中。
Xml代码如下:
<?xmlversion="1.0"encoding="utf-8"?>
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="请选择一项运动项目"/>
<Spinner
android:id="@+id/sportsSp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:entries="@array/sports"
android:prompt="@string/spinner"/>
</LinearLayout>
Java代码如下:
packagecn.csdn.android.utext;
importandroid.app.Activity;
importandroid.os.Bundle;
importandroid.util.Log;
importandroid.view.View;
importandroid.widget.AdapterView;
importandroid.widget.AdapterView.OnItemSelectedListener;
importandroid.widget.TextView;
importandroid.widget.Spinner;
publicclassSpinnerDemoextendsActivityimplementsOnItemSelectedListener{
SpinnersportSp=null;
privatestaticfinalStringTAG="TAG";
@Override
protectedvoidonCreate(BundlesavedInstanceState){
//TODOAuto-generatedmethodstub
super.onCreate(savedInstanceState);
setContentView(R.layout.spinner);
findViews();
}
privatevoidfindViews(){
sportSp=(Spinner)this.findViewById(R.id.sportsSp);
sportSp.setOnItemSelectedListener(this);
}
@Override
publicvoidonItemSelected(AdapterView<?>arg0,Viewarg1,intarg2,
longarg3){
TextViewtv=(TextView)arg1;
Log.i(TAG,tv.getText().toString());
}
@Override
publicvoidonNothingSelected(AdapterView<?>arg0){
}
}