zoukankan      html  css  js  c++  java
  • Android UI设计 下拉菜单Spinner用法 动态添加删除Spinner菜单项

    Spinner是一种下接菜单,类似HTML中的select标签,点击后弹出一个对话框,显示几个供选择的选项,手机屏幕大小有限,如果都用RadioGroup单选按钮,会占用很大的空间。今天的例子最终效果如下图:

    Spinner需要绑定一个适配器ArrayAdapter,将菜单项放在适配器中,
    添加删除菜单项只需要调用适配器的add,remove方法即可。

    布局XML;

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation
    ="vertical"
    android:layout_width
    ="fill_parent"
    android:layout_height
    ="fill_parent"
    >
    <EditText android:id="@+id/et"
    android:layout_width
    ="fill_parent"
    android:layout_height
    ="wrap_content"
    />
    <Button android:id="@+id/add"
    android:layout_width
    ="fill_parent"
    android:layout_height
    ="wrap_content"
    android:text
    ="添加"
    />
    <Button android:id="@+id/remove"
    android:layout_width
    ="fill_parent"
    android:layout_height
    ="wrap_content"
    android:text
    ="删除"
    />
    <Spinner android:id="@+id/sp"
    android:layout_width
    ="fill_parent"
    android:layout_height
    ="wrap_content"
    />
    </LinearLayout>

    一个EditText,用于定义需要添加或删除的菜单项,一个添加,一个删除按钮,还有一个就是Spinner
    在strings.xml中定义一个初始的数组,就是刚开始时Spinner显示的项目,当然,也可以直接在JAVA代码中定义

    <string-array name="action">
    <item>吃饭</item>
    <item>睡觉</item>
    <item>上网</item>
    </string-array>

    JAVA程序代码:

    package com.pocketdigi.spanner;

    import java.util.ArrayList;

    import android.app.Activity;
    import android.os.Bundle;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.ArrayAdapter;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.Spinner;

    publicclass main extends Activity {
    /** Called when the activity is first created. */
    EditText et;
    Button add,remove;
    Spinner sp;
    ArrayList
    <String> list=new ArrayList<String>();
    ArrayAdapter
    <String> adapter;
    @Override
    publicvoid onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    et
    =(EditText)findViewById(R.id.et);
    add
    =(Button)findViewById(R.id.add);
    remove
    =(Button)findViewById(R.id.remove);
    sp
    =(Spinner)findViewById(R.id.sp);
    //获取相应对象
    String[] ls=getResources().getStringArray(R.array.action);
    //获取XML中定义的数组
    for(int i=0;i<ls.length;i++){
    list.add(ls[i]);
    }
    //把数组导入到ArrayList中
    adapter=new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,list);
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    //设置下拉菜单的风格
    sp.setAdapter(adapter);
    //绑定适配器
    sp.setPrompt("标题栏");
    //设置对话框标题栏
    add.setOnClickListener(new OnClickListener(){//添加按钮监听器

    @Override
    publicvoid onClick(View v) {
    // TODO Auto-generated method stub
    adapter.add(et.getText().toString());
    //添加输入的项 ,add后自动调用notifyDataSetChanged()
    //如果需要指定位置,使用insert(String s, int index)方法
    setTitle(String.valueOf(list.size()));
    //在标题输出添加后list的大小
    }

    });
    remove.setOnClickListener(
    new OnClickListener(){//删除按钮监听器

    @Override
    publicvoid onClick(View v) {
    // TODO Auto-generated method stub
    adapter.remove(sp.getSelectedItem().toString());
    //删除当前选中项,remove后自动调用notifyDataSetChanged()
    setTitle(String.valueOf(list.size()));
    }

    });

    }
    }

    转自:http://www.pocketdigi.com/20100810/20.html

  • 相关阅读:
    测试开发工资为什么这么高?
    测试开发工程师技能图谱 V1.0 版 | 福利
    完成这 10+ 企业级项目实战,你也能进阶中高级测试开发
    我们准备了50000现金,给爱学习的你!手慢无~
    Git实战(四)| Git分支管理实操,搞定在线合并和本地合并
    公开课|互联网测试技术体系详解&职业发展规划
    测试面试 | 某互联网大厂测试面试真题,你能回答出多少?
    2020 中秋国庆,阖家快乐!
    测试面试 | 某BAT大厂测试开发面试真题与重点解析
    jsp_1
  • 原文地址:https://www.cnblogs.com/gzggyy/p/2082809.html
Copyright © 2011-2022 走看看