今天学习了android组件中的spinner,通过spinner完成了下拉列表的实现,下面通过使用ArrayAdapter适配器,实现。
其实思想都一样,分为4步。
第一步,创建数据源。
第二步,新建适配器。
第三步,加载适配器。
下面先看一下效果,便于讲解;
第一步,新建数据源。把数据放在一个类型为String的list中。
第二步,新建适配器。
adapter=new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,list);
第一个参数表示上下文,不多做解释,第二个是android默认布局,当然如果不想用默认布局的话,可以采取其他方式(如simpleAdapter,baseAdapter),第三个参数是数据源。
第三步,给适配器设置一个下拉列表。
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
第四步,加载适配器。
spinner.setAdapter(adapter);
然后为了更好的显示效果,这里添加点击效果。设置监听事件。
spinner.setOnItemSelectedListener(this); !!注意:这里使用的是OnItemSelectedListener,因此需要在头部继承OnItemSelectedListener类
下面分步展示完整代码:
首先是xml文件:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<TextView
android:id="@+id/textview"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="25sp"
android:textColor="#ff0000"
/>
<Spinner
android:id="@+id/spinner"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>
MainActivity.java
package com.example.android_spinner;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.TextView;
public class MainActivity extends Activity implements OnItemSelectedListener{
private TextView tv1;
private List<String>list;
private Spinner spinner;
private ArrayAdapter<String>adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv1=(TextView) findViewById(R.id.textview);
spinner=(Spinner) findViewById(R.id.spinner);
tv1.setText("您选择的城市是北京");
//設置數據源
list=new ArrayList<String>();
list.add("北京");
list.add("上海");
list.add("獷州");
list.add("深圳");
//新建ArrayAdapter(數組適配器)
adapter=new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,list);
//adapter設置一個下拉列式表
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
//加載適配器
spinner.setAdapter(adapter);
spinner.setOnItemSelectedListener(this);
}
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
// TODO Auto-generated method stub
String cityname=adapter.getItem(position);
//Stirng city = list.get(position);
tv1.setText("您选择的城市是"+cityname);
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
// TODO Auto-generated method stub
}
}