關于Spinner
Spinner(下拉菜單)是Android開發中常用到的一種控件,可以用來實現TextView等控件內容的選擇性自動填寫,可以避免這部分內容用戶自己隨意填寫的不規范,比如地址填寫的選擇。下面我們以一個簡單的Demo來了解Spinner最簡單的用法。Spinner也需要與數據適配器配合使用
使用Spinner的基本步驟:
1. 添加一個下拉菜單的list,這里添加的項就是下拉菜單的菜單項。(也就是為spinner添加數據源)
2. 為下拉菜單定義一個適配器,這里就用到里前面定義的list。(也就是將數據源存放進這個適配器)
3. 為適配器設置下拉列表下拉時的菜單樣式。(注意:這里是適配器,而不是spinner)
4. 將適配器綁定到spinner(下拉菜單)上。
5. 為spinner的下拉菜單綁定監聽器,以響應各個菜單的操作。
下面我們一起看一個Demo代碼
Talk is Cheap,Let`s Code!
首先我們還是需要在xml文件中定義一個Spinner,代碼如下:
我們在xml文件中加入了一個Spinner控件和一個TextView
TextView用來顯示我們在Spinner中選中的選項
<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/tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="30dp"
android:textSize="20sp" />
<Spinner
android:id="@+id/spinner"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"></Spinner>
</LinearLayout>
然后來編寫我們的java代碼,在Activity文件中實現我們的主要邏輯,代碼如下:
public class MainActivity extends AppCompatActivity {
private TextView textView;
//首先還是先聲明這個Spinner控件
private Spinner spinner;
//定義一個String類型的List數組作為數據源
private List<String> dataList;
//定義一個ArrayAdapter適配器作為spinner的數據適配器
private ArrayAdapter<String> adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
spinner = (Spinner) findViewById(R.id.spinner);
textView = (TextView) findViewById(R.id.tv);
//為dataList賦值,將下面這些數據添加到數據源中
dataList = new ArrayList<String>();
dataList.add("北京");
dataList.add("上海");
dataList.add("廣州");
dataList.add("深圳");
dataList.add("咸寧");
/*為spinner定義適配器,也就是將數據源存入adapter,這里需要三個參數
1. 第一個是Context(當前上下文),這里就是this
2. 第二個是spinner的布局樣式,這里用android系統提供的一個樣式
3. 第三個就是spinner的數據源,這里就是dataList*/
adapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,dataList);
//為適配器設置下拉列表下拉時的菜單樣式。
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
//為spinner綁定我們定義好的數據適配器
spinner.setAdapter(adapter);
//為spinner綁定監聽器,這里我們使用匿名內部類的方式實現監聽器
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
textView.setText("您當前選擇的是:"+adapter.getItem(position));
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
textView.setText("請選擇您的城市");
}
});
}
}
整個Demo代碼就寫完了,非常簡單,那么我們再來看一下Demo運行效果:
Demo
可以看到效果很好,達到了下拉菜單選擇的目的,并且可以將選擇的項目自動設置到TextView里面。
Android菜鳥之Spinner控件簡單使用成就達成!
Spinner還支持圖文混排的item列表,類似自定義ListView中的效果,只需將ArrayAdapter換成SimpleAdapter,并自定義item界面,然后添加對應的數據源,最后將SimpleAdapter綁定到spinner即可。具體使用方法與上面基本一致,SimplerAdapter的用法可以參照我上一篇文章:
這里就不再贅述了。
完。