您的位置:首页 > 移动开发 > Android开发

Android开发总结笔记 Spinner(列表选项框) 1-1-15

2015-10-13 09:26 393 查看




从Spinner的继承结构就可以看出,这是一个Adapter组件(使用adapter显示数据)

下面来看一下Spinner的一些属性

android:dropDownHorizontalOffset:设置列表框的水平偏移距离

android:dropDownVerticalOffset:设置列表框的水平竖直距离

android:dropDownSelector:列表框被选中时的背景

android:dropDownWidth:设置下拉列表框的宽度

android:gravity:设置里面组件的对其方式

android:popupBackground:设置列表框的背景

android:prompt:设置对话框模式的列表框的提示信息(标题),只能够引用string.xml中的资源id,而不能直接写字符串
android:spinnerMode:列表框的模式,有两个可选值:dialog:对话框风格的窗口dropdown:下拉菜单风格的窗口(默认)可选属性:android:entries:使用数组资源设置下拉列表框的列表项目

为Spinner填充数据的方式有两种

通过android:entries属性(不过这个只能用数组数据来填充)

通过设置自定义Adapter来填充

下面就来演示一下这两种方式

activity_main.xml

<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<Spinner
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="20dp"
android:entries="@array/provinces"
android:spinnerMode="dropdown"></Spinner>
<Spinner
android:id="@+id/spinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="20dp"
android:spinnerMode="dialog"></Spinner>
</LinearLayout>


数组数据

<string-arrayname="provinces">
<item>广东</item>
<item>重庆</item>
<item>山东</item>
<item>山西</item>
<item>陕西</item>
<item>青岛</item>
</string-array>


spinner_layout.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="horizontal">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@mipmap/ic_launcher"/>
<TextView
android:layout_gravity="center"
android:id="@+id/tv_spinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"/>
</LinearLayout>

[/code]

SpinnerAdapter.java

packagecom.example.sumup;
importandroid.content.Context;
importandroid.view.LayoutInflater;
importandroid.view.View;
importandroid.view.ViewGroup;
importandroid.widget.BaseAdapter;
importandroid.widget.TextView;
importjava.util.ArrayList;
publicclassSpinnerAdapterextendsBaseAdapter{
privateContextmContext;
privateArrayList<City>mCities;
publicSpinnerAdapter(Contextcontext,ArrayList<City>city){
mContext=context;
mCities=city;
}
@Override
publicintgetCount(){
returnmCities.size();
}
@Override
publicObjectgetItem(intposition){
returnposition;
}
@Override
publiclonggetItemId(intposition){
returnposition;
}
@Override
publicViewgetView(intposition,ViewconvertView,ViewGroupparent){
convertView=LayoutInflater.from(mContext).inflate(R.layout.spinner_layout,parent,false);
TextViewtextView=(TextView)convertView.findViewById(R.id.tv_spinner);
textView.setText(mCities.get(position).getName());
returnconvertView;
}
}


象征性地来个实体类

City.java

packagecom.example.sumup;
publicclassCity{
privateStringname;
publicCity(Stringname){
this.name=name;
}
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
}


MainActivity.java

packagecom.example.sumup;
importandroid.os.Bundle;
importandroid.support.v7.app.AppCompatActivity;
importandroid.view.View;
importandroid.widget.AdapterView;
importandroid.widget.Spinner;
importandroid.widget.Toast;
importjava.util.ArrayList;
publicclassMainActivityextendsAppCompatActivity{
privateSpinnermSp;
privateArrayList<City>mCities;
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
}
privatevoidinitView(){
mCities=newArrayList<>();
mSp=(Spinner)findViewById(R.id.spinner);
mCities.add(newCity("广州"));
mCities.add(newCity("北京"));
mCities.add(newCity("中山"));
mCities.add(newCity("上海"));
mCities.add(newCity("深圳"));
mSp.setAdapter(newSpinnerAdapter(this,mCities));
mSp.setOnItemSelectedListener(newAdapterView.OnItemSelectedListener(){
@Override
publicvoidonItemSelected(AdapterView<?>parent,Viewview,intposition,longid){
Toast.makeText(MainActivity.this,mCities.get(position).getName(),Toast.LENGTH_SHORT).show();
}
@Override
publicvoidonNothingSelected(AdapterView<?>parent){
}
});
}
}

[/code]



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: