Android组件(二)

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){

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值