实现spinner下拉列表的demo。
demo:下载地址
MainAvtivity.java:
package fk.androiddemo_017;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import java.util.ArrayList;
import java.util.List;
//1,布局文件中声明
//2,values/strings中声明数据源数组(spinner2不需要)
//3,创建ArrayAdapter对象
//4,得到spinner对象,设置数据
//5,设置监听器
public class MainActivity extends Activity implements AdapterView.OnItemSelectedListener {
Spinner spinner;
Spinner spinner2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
spinner=(Spinner)findViewById(R.id.spinner);
spinner2=(Spinner)findViewById(R.id.spinner2);
//用createFromResource创建一个ArrayAdapter<>对象(上下文,数据源,未展开spinner的布局)
ArrayAdapter<CharSequence> adapter= ArrayAdapter.createFromResource(
this, R.array.planets_array, android.R.layout.simple_spinner_item);
//设置spinner展开后每一条item的布局
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
//spinner标题
spinner.setPrompt("行星");
//添加适配器
spinner.setAdapter(adapter);
//设置监听器
spinner.setOnItemSelectedListener(this);
//这个spinner的数据采用代码内加载
List<String> list=new ArrayList<>();
list.add("bobo");
list.add("lili");
//(上下文,展开item每一条目的布局,条目ID,数据源)
ArrayAdapter adapter2=new ArrayAdapter(
this,R.layout.item,R.id.textViewId,list);
spinner2.setAdapter(adapter2);
spinner2.setPrompt("名字");
}
@Override
//注意创建spinner时会默认选中item0,即第一个item,并且会执行这条语句
//只有当选择的子条目与现在的子条目不同时才会调用
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
String selected=parent.getItemAtPosition(position).toString();
System.out.println(selected);
}
@Override
//没有选中时调用,实际上根本不会被调用
public void onNothingSelected(AdapterView<?> parent) {
System.out.println("Nothing selected");
}
}
布局文件:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
xmlns:android="http://schemas.android.com/apk/res/android">
<!--下面一句确定整个打开的spinner样式-->
<Spinner android:spinnerMode="dialog"
android:id="@+id/spinner"
android:layout_marginTop="25dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<Spinner
android:spinnerMode="dialog"
android:id="@+id/spinner2"
android:layout_marginTop="25dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
子条目布局文件:
<?xml version="1.0" encoding="utf-8"?>
<!--用于spinner2-->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/textViewId"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
strings.xml 常量:
<resources>
<string name="app_name">AndroidDemo_017</string>
<!--为spinner提供数据源-->
<string-array name="planets_array">
<item>Earth</item>
<item>Mars</item>
<item>Venus</item>
<item>Saturn</item>
<item>Uranus</item>
</string-array>
</resources>
运行截图: