Spinners--Android基本下拉框

来源:互联网 发布:jsp是javascript吗 编辑:程序博客网 时间:2024/06/16 23:43

Spinners–Android基本下拉框api文档:http://developer.android.com/reference/android/widget/Spinner.html

spinners
在布局文件中添加spinners元素:

<Spinner    android:id="@+id/planets_spinner"    android:layout_width="fill_parent"    android:layout_height="wrap_content" />

最简单的例子:

Spinner spinner = (Spinner) findViewById(R.id.spinner);// 创建一个ArrayAdapter,使用string array和 默认的spinner布局String[] strings = getResources().getStringArray(R.array.planets_array);ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this,                android.R.layout.simple_spinner_item, strings);// 当列表被选择出现时指定展示的布局adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);// 设置适配器spinner.setAdapter(adapter);
<?xml version="1.0" encoding="utf-8"?><resources>    <string-array name="planets_array">        <item>1</item>        <item>2</item>        <item>3</item>        <item>4</item>        <item>5</item>        <item>6</item>        <item>7</item>        <item>8</item>    </string-array></resources>

监听事件:

spinner.setOnItemSelectedListener(new OnItemSelectedListener() {    @Override    public void onItemSelected(AdapterView<?> parent, View view,            int position, long id) {    //当item被选择时parent.getItemAtPosition(position)    Toast.makeText(MainActivity.this,    parent.getItemAtPosition(position).toString(),Toast.LENGTH_LONG).show();    }    @Override    public void onNothingSelected(AdapterView<?> parent) {    }});

自定义adapter

下拉框单个条目的布局item_spinner.xml:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:orientation="horizontal" >    <TextView        android:id="@+id/name"        android:layout_width="100dp"        android:layout_height="50dp"        android:background="@null"        android:padding="15dp"        android:marqueeRepeatLimit="marquee_forever"        android:ellipsize="marquee"        android:singleLine="true" /></LinearLayout>

MainActivity的布局包含下拉框,背景是自己的一张照片:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:background="#FFFFFF"    android:layout_height="match_parent"     >    <Spinner        android:id="@+id/spinner"        android:layout_width="100dp"        android:layout_height="50dp"        android:background="@drawable/btn_identyfy_code"        android:popupBackground="@null"        android:layout_alignParentTop="true"        android:gravity="center"      /></RelativeLayout>

创建了一个ItemBean.java:

package com.yunmo.spinner;public class ItemBean {    private String ItemName;    private int ItemId;    public ItemBean(String itemName, int itemId) {        super();        ItemName = itemName;        ItemId = itemId;    }    public String getItemName() {        return ItemName;    }    public void setItemName(String itemName) {        ItemName = itemName;    }    public int getItemId() {        return ItemId;    }    public void setItemId(int itemId) {        ItemId = itemId;    }}

适配器:

package com.yunmo.spinner;import java.util.List;import java.util.zip.Inflater;import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.TextView;public class mySpinnerAdapter extends BaseAdapter{    private Context context;    private List<ItemBean> list;    public mySpinnerAdapter(Context context , List<ItemBean> list) {        this.context = context;        this.list = list;    }    @Override    public int getCount() {        return list.size();    }    @Override    public ItemBean getItem(int position) {        return list.get(position);    }    @Override    public long getItemId(int position) {        return position;    }    @Override    public View getView(int position, View convertView, ViewGroup parent) {        if (convertView == null) {            convertView =LayoutInflater.from(context).inflate(R.layout.item_spinner, null);        }        TextView name = (TextView) convertView.findViewById(R.id.name);        name.setText(getItem(position).getItemName());        return convertView;    }}

MainActivity里的代码:

package com.yunmo.spinner;import java.util.ArrayList;import java.util.List;import android.app.Activity;import android.os.Bundle;import android.view.MotionEvent;import android.view.View;import android.widget.AdapterView;import android.widget.Toast;import android.widget.AdapterView.OnItemSelectedListener;import android.widget.Spinner;public class MainActivity extends Activity {    private Spinner spinner;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        spinner = (Spinner) findViewById(R.id.spinner);        List<ItemBean> list = new ArrayList<ItemBean>();        list.add(new ItemBean("宝马aaaaaaaaaaa",10000));        list.add(new ItemBean("a马bbbbbbbbb",10001));        list.add(new ItemBean("b马ccccccccc",10002));        list.add(new ItemBean("c马dddddddd",10003));        mySpinnerAdapter adapter = new mySpinnerAdapter(this, list);        spinner.setAdapter(adapter);        spinner.setOnItemSelectedListener(new OnItemSelectedListener() {            @Override            public void onItemSelected(AdapterView<?> parent, View view,                    int position, long id) {                ItemBean itemBean = (ItemBean)parent.getItemAtPosition(position);                Toast.makeText(MainActivity.this, itemBean.getItemId()+"", Toast.LENGTH_LONG).show();            }            @Override            public void onNothingSelected(AdapterView<?> parent) {            }        });    }}

这里写图片描述

0 0