Android Spinner控件介绍
layout布局文件添加Spinner控件,如下:
<Spinner
android:id="@+id/spinner1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:entries="@array/languages"/>
其中android:entries="@array/languages"表示Spinner的数据集合是从资源数组languages中获取的,languages数组资源定义在values/arrays.xml中:
<?xml version="1.0"encoding="utf-8"?>
<resources>
<string-array name="languages">
<item>c语言</item>
<item>java </item>
<item>php</item>
<item>xml</item>
<item>html</item>
</string-array>
</resources>
到此为止,已经完成了Spinner的显示,接下来添加点击事件。
为Spinner添加点击事件可以通过public void setOnItemSelectedListener(AdapterView.OnItemSelectedListener listener),但切记不可使用setOnItemClickListener方法,程序会产生错误。
public class SpinnerActivity extends Activity {
private Spinner spinner;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_spinner);
spinner = (Spinner) findViewById(R.id.spinner);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
String[] languages = getResources().getStringArray(R.array.languages);
Toast.makeText(SpinnerActivity.this, languages[position], Toast.LENGTH_SHORT).show();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
}
}
也可以通过java代码添加下拉列表的菜单项。
1)java文件中为下拉列表添加一个适配器
ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_spinner_item, allcountries);
2)为adapter添加下拉列表下拉时的菜单样式。
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
3)将适配器添加到下拉列表Spinner上。
spinner.setAdapter(adapter);
4)为spinner添加点击事件,同上。
实例代码:
public class SpinnerActivity extends Activity {
private Spinner spinner;
private List<String> data_list;
private ArrayAdapter<String> adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_spinner);
spinner = (Spinner) findViewById(R.id.spinner);
//数据源
data_list = new ArrayList<String>();
data_list.add("java");
data_list.add("c++");
data_list.add("php");
data_list.add("html");
//适配器
adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, data_list);
//设置样式
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
//加载适配器
spinner.setAdapter(adapter);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
Toast.makeText(SpinnerActivity.this, data_list.get(position), Toast.LENGTH_SHORT).show();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
}
}
Spinner类介绍:
类继承关系如下:
Spinner extends AbsSpinner
AbsSpinner extends android.widget.AdapterView<android.widget.SpinnerAdapter>
AdapterView extends ViewGroup
ViewGroup extends View
常用方法:
1 public void setOnItemClickListener(AdapterView.OnItemClickListener l);
public void setOnItemSelectedListener(AdapterView.OnItemSelectedListener listener);
public void setAdapter (SpinnerAdapter adapter)