• Android 控件:使用下拉列表框--Spinner


    ---恢复内容开始---

    一、前段代码

    <Spinner
        android:id="@+id/spin"
        android:paddingTop="10px"
        android:layout_width="fill_parent"
        android:layout_height="50sp"/>
    
    <Button
        android:id="@+id/addList"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="添加" />

    二、接下来新建一个下拉列表的视图资源,即每个Item的TextView,我们把它命名为dropdown.xml,我们把它放到drawable中,代码为:

    <?xml version="1.0" encoding="utf-8"?>
    <TextView xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/tv1"
        android:layout_width="fill_parent"
        android:layout_height="20sp"
        android:singleLine="true"
        style="?android:attr/spinnerDropDownItemStyle"
        />

    三、创建Adapter

    这里介绍下两个函数:

    1.ArrayAdapter.ArrayAdapter(Context context,int textViewResourcId,List<String> objects)

    我们可以通过它创建新的Adapter对象,这里需要三个参数:

    (1)context上下文关系,就是这个Adapter属于哪个Activity,属于哪个应用程序。

    (2)textViewResourcId TextView的资源id

     (3)  最后一个参数是你要向下拉列表中添加的数据,可以是一个静态的String数组,也可以是一个动态的List<String>;

    2.AdapterView.setOnItemSelectedListener(OnItemSelectedListener listener),使用这个方法为Spinner对象设置监听器。这里参数是OnItemSelectedListener 接口,实现这个接口需要重写两个方法:

    (1)public void onItemSelected(AdapterView<?> parent, View view,int position, long id) 

    这个方法中可以完成当选项被选中时要做的处理。四个参数的含义:

    • AdapterView<?> parent,这个类似context,只是范围比较下,指你当前操作的AdapterView
    • View view ,这个参数是你具体单击的那个TextView对象
    • int position 这个参数的意思是你单击的那个view在整个AdaterView中的位置
    • long id 单击view的id

    (2)public void onNothingSelected(AdapterView<?> parent) 

    这个回调函数在AdapterView中没有选项时调用。

    完整代码如下:

        private Spinner spinner;
        private TextView tv;
        private ArrayAdapter<String> adapter;
        private static final String[] years = { "小于1年", "1年-3年", "3年-5年", "5年以上" };
        private ArrayList<String> array = new ArrayList<String>();
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            if (savedInstanceState == null) {
                getSupportFragmentManager().beginTransaction()
                        .add(R.id.container, new PlaceholderFragment()).commit();
            }
            spinner = (Spinner) findViewById(R.id.spin);
    
            tv = (TextView) findViewById(R.id.textView1);
    
            for (int i = 0; i < years.length; i++) {
                array.add(years[i]);
            }
            adapter = new ArrayAdapter<String>(this,
                    android.R.layout.simple_spinner_item, array);
            adapter.setDropDownViewResource(R.drawable.dropdown);
            
            spinner.setAdapter(adapter);
            spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
    
                @Override
                public void onItemSelected(AdapterView<?> parent, View view,
                        int position, long id) {
                    // TODO 自动生成的方法存根
                    String seleted = array.get(position);
                    tv.setText(seleted);
                    parent.setVisibility(View.VISIBLE);
                }
    
                @Override
                public void onNothingSelected(AdapterView<?> arg0) {
                    // TODO 自动生成的方法存根
                    tv.setText("您没有选择");
                }
    
            });

    ---恢复内容结束---

  • 相关阅读:
    数据中心
    【Vegas原创】解决cmd窗口不够使用的方法
    【Vegas原创】定期删除archive档的方法
    【Vegas原创】Can't connect to X11 window server using ':0.0' 解决方法
    Linux 操作指令
    【Vegas原创】按自定义格式进行编号的SQL自定义函数
    Error:No description found when saving maintenance plans
    【Vegas原创】巧用任务计划
    svn命令备份
    [转载]R与python共舞
  • 原文地址:https://www.cnblogs.com/smiler/p/3720758.html
Copyright © 2020-2023  润新知