标签:spinner
Spinner即下拉菜单。
在android中实现Spinner组件需要以下三个步骤:
1.在XML文件中定义标签Spinner
<Spinner
android:id="@+id/spinner"
android:layout_width="match_parent"
android:layout_height="wrap_content"
<!--其它属性略-->
/>
2.在Strings.xml文件中声明items
<resources>
<string name="item1">Item1</string>
<string name="item2">Item2</string>
<string name="item3">Item3</string>
<!--其它item省略-->
</rresources>
3.Java代码实现Controller
我们需要BaseAdapter将字符串数据传给Spinner UI组件,而实现BaseAdapter必须覆盖一些方法。
代码片示例:
//数据域
Spinner spinner;
int[] messageIds={R.string.item1,R.string.item2,R.string.item3};//下拉菜单spinner的items资源
//覆盖onCreate()方法
@Override
public void onCreate(Bundle savedInstanceState) {
this.requestWindowFeature(Window.FEATURE_NO_TITLE);//去掉标题栏
super.onCreate(savedInstanceState);
setContentView(R.layout.register);
processSpinner();//处理下拉菜单spinner
}
//此方法用于处理下拉列表spinner
private void processSpinner(){
spinner=(Spinner)findViewById(R.id.spinner);
//adapter 作为spinner的适配器
BaseAdapter baseAdapter=new BaseAdapter() {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
TextView spinnerItemTextView=new TextView(Register.this);
spinnerItemTextView.setText(" "+getResources().getText(messageIds[position]));
spinnerItemTextView.setTextColor(Color.BLACK);
spinnerItemTextView.setTextSize(16);
return spinnerItemTextView;
}
@Override
public long getItemId(int arg0) {
// TODO Auto-generated method stub
return 0;
}
@Override
public Object getItem(int arg0) {
// TODO Auto-generated method stub
return null;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return 3;
}
};
spinner.setAdapter(baseAdapter);//为spinner设置adapter
}
如果要为Spinner Items设置点击事件的话,可以这么做:
spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
String str=parent.getItemAtPosition(position).toString();
Toast.makeText(SpinnerActivity.this, "你点击的是:"+str, 2000).show();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
// TODO Auto-generated method stub
}
});
注意:
其实,String资源也可以写成另一种形式:
<string-array name="spinnername">
<item>北京</item>
<item>上海 </item>
<item>广州</item>
<item>深圳</item>
</string-array>
对应的java代码中是建立String数组而不是String ID数组。
// 建立String数组存储Spinner数据
String[] mItems = getResources().getStringArray(R.array.spinnername);
版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:spinner
原文地址:http://blog.csdn.net/qq_16912257/article/details/47094125