转:动态添加/删除spinner菜单--ArrlayList与Widget依赖性

本文介绍了一个使用Android Spinner组件的简单示例应用。该应用允许用户从预定义的城市列表中选择并添加或删除选项。通过这个示例,读者可以了解如何在Android应用中实现动态更新的下拉列表。

package irdc.ex04_09;

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

import java.util.ArrayList;
import java.util.List;

public class EX04_09 extends Activity
{
  private static final String[] countriesStr =
  { "成都", "北京", "上海", "香港" };
  private TextView myTextView;
  private EditText myEditText;
  private Button myButton_add;
  private Button myButton_remove;
  private Spinner mySpinner;
  private ArrayAdapter<String> adapter;
  private List<String> allCountries;

  /** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState)
  {
    super.onCreate(savedInstanceState);
    /* 载入main.xml Layout */
    setContentView(R.layout.main);

    allCountries = new ArrayList<String>();
    for (int i = 0; i < countriesStr.length; i++)
    {
      allCountries.add(countriesStr[i]);
    }

    /* new ArrayAdapter传入allCountries */
    adapter = new ArrayAdapter<String>(this,
        android.R.layout.simple_spinner_item, allCountries);
    adapter
        .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

    /* findViewById()取得对象 */
    myTextView = (TextView) findViewById(R.id.myTextView);
    myEditText = (EditText) findViewById(R.id.myEditText);
    myButton_add = (Button) findViewById(R.id.myButton_add);
    myButton_remove = (Button) findViewById(R.id.myButton_remove);
    mySpinner = (Spinner) findViewById(R.id.mySpinner);

    /* 将ArrayAdapter添加到Spinner对象中 */
    mySpinner.setAdapter(adapter);

    /* 给myButton_add添加OnClickListener */
    myButton_add.setOnClickListener(new Button.OnClickListener()
    {

      @Override
      public void onClick(View arg0)
      {
        String newCountry = myEditText.getText().toString();

        /* 比较值是否已经存在,不存在再添加   */
        for (int i = 0; i < adapter.getCount(); i++)
        {
          if (newCountry.equals(adapter.getItem(i)))
          {
            return;
          }
        }

        if (!newCountry.equals(""))
        {
          /* 重要的方:将值添加进adapters*/
          adapter.add(newCountry);

          /* 取得添加值的位子 */
          int position = adapter.getPosition(newCountry);
          /* 将spinner指定在添加的位子 */
          mySpinner.setSelection(position);

          /* 将myEditText清空  */
          myEditText.setText("");
        }

      }
    });

    /* 将myButton_remove添加OnClickListener */
    myButton_remove.setOnClickListener(new Button.OnClickListener()
    {

      @Override
      public void onClick(View arg0)
      {

        if (mySpinner.getSelectedItem() != null)
        {
          /* 删除mySpinner现在指定的数值 */
          adapter.remove(mySpinner.getSelectedItem().toString());

          /* 将myEditText清空 */
          myEditText.setText("");
          if (adapter.getCount() == 0)
          {
            /* 将myTextView清空 */
            myTextView.setText("");
          }
        }
      }
    });

    /* 将mySpinner添加OnItemSelectedListener */
    mySpinner.setOnItemSelectedListener(new Spinner.OnItemSelectedListener()
    {

      @Override
      public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,
          long arg3)
      {
        /* 将所选的mySpinner的数值放入myTextView中 */
        myTextView.setText(arg0.getSelectedItem().toString());
      }

      @Override
      public void onNothingSelected(AdapterView<?> arg0)
      {

      }
    });

  }
}

升级了 0 个软件包,新安装了 0 个软件包,要卸载 0 个软件包,有 369 个软件包未被升级。 有 3 个软件包没有被完全安装或卸载。 解压缩后会消耗 0 B 的额外空间。 您希望继续执行吗? [Y/n] y 正在设置 initramfs-tools (0.142) ... update-initramfs: deferring update (trigger activated) 正在设置 plymouth (24.004.60-4) ... update-initramfs: Generating /boot/initrd.img-6.6.15-amd64 E: /usr/share/initramfs-tools/hooks/plymouth failed with return 1. update-initramfs: failed for /boot/initrd.img-6.6.15-amd64 with 1. dpkg: 处理软件包 plymouth (--configure)时出错: 已安装 plymouth 软件包 post-installation 脚本 子进程返回错误状态 1 dpkg: 依赖关系问题使得 plymouth-label 的配置工作不能继续: plymouth-label 依赖于 plymouth (= 24.004.60-4);然而: 软件包 plymouth 尚未配置。 dpkg: 处理软件包 plymouth-label (--configure)时出错: 依赖关系问题 - 仍未被配置 正在处理用于 initramfs-tools (0.142) 的触发器 ... update-initramfs: Generating /boot/initrd.img-6.6.15-amd64 E: /usr/share/initramfs-tools/hooks/plymouth failed with return 1. update-initramfs: failed for /boot/initrd.img-6.6.15-amd64 with 1. dpkg: 处理软件包 initramfs-tools (--configure)时出错: 已安装 initramfs-tools 软件包 post-installation 脚本 子进程返回错误状态 1 在处理时有错误发生: plymouth plymouth-label initramfs-tools E: Sub-process /usr/bin/dpkg returned an error code (1)
最新发布
06-19
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值