`

Android中动态添加╱删除的Spinner菜单 — ArrayList与Widget的依赖性

阅读更多

例子效果图

 

 

 

实现步骤

 

第一步 :建 Android 工程: SpinnerDemo

                                                                   

第二步 :编写 Activity 的子类别: SpinnerDemo ,其程序代码如下:

 

package com.a3gs.spinner;

import java.util.ArrayList;

import java.util.List;

import android.app.Activity;

import android.os.Bundle;

import android.view.View;

import android.widget.*;

 

public class SpinnerDemo extends Activity {

    private TextView myTV;

    private Spinner mySp;

    private EditText myET;

    private Button addBtn, delBtn;

    private final String[] items = {" 北京市 ", " 上海市 ", " 天津市 ", " 福州市 "} ;

    private ArrayAdapter<String> adapter;

    private List<String> allItems;

    /** Called when the activity is first created. */

    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

       

        myTV = (TextView) findViewById(R.id.myTV);

        myET = (EditText) findViewById(R.id.myET);

        addBtn = (Button) findViewById(R.id.addBtn);

        delBtn = (Button) findViewById(R.id.delBtn);

        mySp = (Spinner) findViewById(R.id.mySpinner);

        mySp.setVisibility(View.VISIBLE);

        allItems = new ArrayList<String>();

        for(int i=0; i < items.length; i++){

            allItems.add(items[i]);

        }

        adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, allItems);

        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

        mySp.setAdapter(adapter);

        mySp.setOnItemSelectedListener(new Spinner.OnItemSelectedListener(){

           @Override

           public void onItemSelected(AdapterView<?> arg0, View arg1,

                  int arg2, long arg3) {

              // TODO Auto-generated method stub

              myTV.setText(" 您选择的是: " + mySp.getSelectedItem().toString());

           }

           @Override

           public void onNothingSelected(AdapterView<?> arg0) {

              // TODO Auto-generated method stub

           }           

        });

       

        addBtn.setOnClickListener(new Button.OnClickListener(){

           @Override

           public void onClick(View v) {

              // TODO Auto-generated method stub

              String ETText = myET.getText().toString();

              int len = adapter.getCount();

              // 检查所添加的是否已经存在

              for(int i = 0; i < len; i++){

                  if(ETText.equals(adapter.getItem(i))){

                     return;

                  }

              }

             

              if(!ETText.equals("")){

                  adapter.add(ETText);

                  int position = adapter.getPosition(ETText);

                  mySp.setSelection(position);

                  myET.setText("");

              }

           }           

        });

       

        delBtn.setOnClickListener(new Button.OnClickListener(){

           @Override

           public void onClick(View v) {

              // TODO Auto-generated method stub

              if(mySp.getSelectedItem() !=  null) {

                  adapter.remove(mySp.getSelectedItem().toString());

                  myET.setText("");

              }

              if(adapter.getCount() == 0){

                  myET.setText("");

              }

           }

        });

    }

}

 

第三步 :修改 res/layout/main.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"

    >

< TextView 

    android:id = "@+id/myTV"

    android:layout_width = "fill_parent"

    android:layout_height = "wrap_content"

    android:text = "@string/hello"

    />

< EditText 

    android:id = "@+id/myET"

    android:layout_width = "fill_parent"

    android:layout_height = "wrap_content"

    />

< LinearLayout xmlns:android = "http://schemas.android.com/apk/res/android"

    android:orientation = "horizontal"

    android:layout_width = "fill_parent"

    android:layout_height = "wrap_content"

    >

    < Button

       android:id = "@+id/addBtn"

        android:layout_width = "160sp"

        android:layout_height = "wrap_content"

        android:text = "@string/btn_text1"

        />

    < Button

       android:id = "@+id/delBtn"

        android:layout_width = "160sp"

        android:layout_height = "wrap_content"

        android:text = "@string/btn_text2"

        />

</ LinearLayout >

< Spinner

    android:id = "@+id/mySpinner"

    android:layout_width = "fill_parent"

    android:layout_height = "wrap_content"

    />

</ LinearLayout >

第四步 :修改 res/layout/spinner_dropdown.xml ,其代码如下:

 

<? xml version = "1.0" encoding = "utf-8" ?>

< TextView 

    xmlns:android = "http://schemas.android.com/apk/res/android"

    android:id = "@+id/text"

    android:layout_width = "wrap_content"

    android:layout_height = "25sp"

    android:singleLine = "true"

    style = "?android:attr/spinnerDropDownItemStyle"

    />

 

扩展学习

 

setDropDownViewResource 主要是设置 User 点击 Spinner 后出现的下拉菜单样式,除了前一个范例使用自设方式改变 TextView 内容之外, android 亦提供两种基本的样式:

 android.R.layout.simple_spinner_item TextView 的下拉菜单。

 android.R.layout.simple_spinner_dropdown_item :除了有 TextView ,右边有 radio 的下拉菜单。

 

查看 Android 源代码中的 simple_spinner_drop, , down_item.xml ,内容如下:

<?xml version="1.0" encoding="utf-8"?>

<TextView

xmlns:android="http://schemas.android.com/apk/res/android"

android:id="@android:id/text1"

android:layout_width="fill_parent"

android:layout_height="?android:attr/listPreferredItemHeight"

android:singleLine="true"

style="?android:attr/spinnerDropDownItemStyle"

/>

以下为自定义修改后,适用于 spinner Layout

<?xml version="1.0" encoding="utf-8"?>

<TextView

xmlns:android="http://schemas.android.com/apk/res/android"

android:id="@android:id/text1"

android:layout_width="fill_parent"

android:layout_height="12sp"

android:singleLine="true"

style="?android:attr/spinnerDropDownItemStyle"

android:textSize="10sp"

/>

分享到:
评论

相关推荐

    android 动态添加删除的Spinner菜单 ArrayList与Widget的依赖性

    android 动态添加删除的Spinner菜单 ArrayList与Widget的依赖性

    Google Android SDK开发范例大全(PDF高清完整版1)(4-1)

    4.9 动态添加/删除的Spinner菜单——ArrayList与Widget的依赖性 4.10 心爱小宝贝相片集——Gallery与衍生BaseAdapter容器 4.11 快速的搜索手机文件引擎——JavaI/O的应用 4.12 按钮也能随点击变换——ImageButton...

    Google Android SDK开发范例大全(PDF完整版4)(4-4)

    4.9 动态添加/删除的Spinner菜单——ArrayList与Widget的依赖性 4.10 心爱小宝贝相片集——Gallery与衍生BaseAdapter容器 4.11 快速的搜索手机文件引擎——JavaI/O的应用 4.12 按钮也能随点击变换——ImageButton...

    Google Android SDK开发范例大全(PDF高清完整版3)(4-3)

    4.9 动态添加/删除的Spinner菜单——ArrayList与Widget的依赖性 4.10 心爱小宝贝相片集——Gallery与衍生BaseAdapter容器 4.11 快速的搜索手机文件引擎——JavaI/O的应用 4.12 按钮也能随点击变换——ImageButton...

    Google Android SDK开发范例大全的目录

    4.9 动态添加/删除的Spinner菜单——ArrayList与Widget的依赖性 4.10 心爱小宝贝相片集——Gallery与衍生BaseAdapter容器 4.11 快速的搜索手机文件引擎——JavaI/O的应用 4.12 按钮也能随点击变换——ImageButton...

    Google Android SDK开发范例大全(完整版附部分源码).pdf

    4.9 动态添加/删除的Spinner菜单——ArrayList与Widget的依赖性 4.10 心爱小宝贝相片集——Gallery与衍生BaseAdapter容器 4.11 快速的搜索手机文件引擎——JavaI/O的应用 4.12 按钮也能随点击变换——ImageButton...

    Google+Android+SDK开发范例大全

    4.7 专业相框设计——ImageView的堆栈应用 4.8 自定义下拉菜单模式——Spinner与setDropDownViewResource 4.9 动态添加/删除的Spinner菜单——ArrayList与Widget的依赖性 4.10 心爱小宝贝相片集——Gallery与衍生...

    Google Android SDK 开发范例大全01

    4.9 动态添加/删除的Spinner菜单——ArrayList与Widget的依赖性 4.10 心爱小宝贝相片集——Gallery与衍生BaseAdapter容器 4.11 快速的搜索手机文件引擎——JavaI/O的应用 4.12 按钮也能随点击变换——ImageButton...

    Google Android SDK 开发范例大全02

    4.9 动态添加/删除的Spinner菜单——ArrayList与Widget的依赖性 4.10 心爱小宝贝相片集——Gallery与衍生BaseAdapter容器 4.11 快速的搜索手机文件引擎——JavaI/O的应用 4.12 按钮也能随点击变换——ImageButton...

    Google Android sdk 开发范例大全 部分章节代码

    4.9 动态添加/删除的Spinner菜单——ArrayList与Widget的依赖性 4.10 心爱小宝贝相片集——Gallery与衍生BaseAdapter容器 4.11 快速的搜索手机文件引擎——JavaI/O的应用 4.12 按钮也能随点击变换——ImageButton...

    Google Android SDK开发范例大全(完整版)

    4.9 动态添加/删除的Spinner菜单——ArrayList与Widget的依赖性 4.10 心爱小宝贝相片集——Gallery与衍生BaseAdapter容器 4.11 快速的搜索手机文件引擎——JavaI/O的应用 4.12 按钮也能随点击变换——ImageButton...

Global site tag (gtag.js) - Google Analytics