首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Spinner中加载字符串值的数组/列表,排除一个值?

如何在Spinner中加载字符串值的数组/列表,排除一个值?
EN

Stack Overflow用户
提问于 2016-02-25 10:16:15
回答 2查看 3.5K关注 0票数 2

我需要创建两个附带符(都显示一个位置列表),其规则如下:

假设我有一套通用的位置,如下所示:

  • 印度、日本、中国、韩国、斯里兰卡、尼泊尔-1号公路上的地点
  • 美国、墨西哥、加拿大、牙买加-2号公路上的地点
  • 德国、法国、俄罗斯、西班牙、意大利-3号公路上的地点
  • 巴西、阿根廷、智利-4号公路上的地点

考虑到在这4个名单中的位置是沿着4条独特的路线,如上文所列。

现在,我想填充在旋转-1(即所有4条线路上的国家)中的通用集合中的所有位置,它将充当一个"From“位置选择器。

一旦从Spinner-1中选择了一个位置,我希望只使用那些出现在所选位置所在的特定路由上的位置填充自旋器-2(它充当" to“位置选择器)。另外,我希望将所选位置从自旋器-1中排除在旋转-2中显示。

例如,如果墨西哥是从旋转-1,旋转-2应该显示美国,加拿大,牙买加.

对这一要求进行规划的最佳机制是什么?

EN

回答 2

Stack Overflow用户

发布于 2016-02-25 10:49:32

好的我现在已经做了,主要逻辑是

  1. 为第一个旋转器创建一个数组和适配器。
  2. 在第一个旋转器的onItemSelectedListener方法中,删除选定的元素并将适配器设置为第二个旋转器。

,让我们看看

你有这样一个国家的ArrayList

代码语言:javascript
运行
复制
final ArrayList<String> countries = new ArrayList<>();
    countries.add("India");
    countries.add("Japan");
    countries.add("China");
    countries.add("South Korea");
    countries.add("Nepal");

和您有两个旋转器(spinner & spinner2)

代码语言:javascript
运行
复制
Spinner spinner1 = (Spinner) findViewById(R.id.mySpinner1);
final Spinner spinner2 = (Spinner) findViewById(R.id.mySpinner2); //It is final because it was accessed within inner class but if you don't want so then declare it as class level variable

您首先为spinner做了一个适配器

代码语言:javascript
运行
复制
ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, countries);
        spinnerArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinner1.setAdapter(spinnerArrayAdapter);

在onItemSelected of spinner中,从数组中删除所选元素,并将适配器设置为第二个spinner,即spinner2

代码语言:javascript
运行
复制
spinner1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                 ArrayList<String> tempCounties = (ArrayList<String>) countries.clone();

               tempCounties.remove(position);
               ArrayAdapter<String> spinnerArrayAdapter2 = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_spinner_item, tempCounties);
               spinnerArrayAdapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
               spinner2.setAdapter(spinnerArrayAdapter2);
            }

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

            }
        });
票数 1
EN

Stack Overflow用户

发布于 2016-02-29 06:00:21

尝尝这个

代码语言:javascript
运行
复制
String[] regionsArray;
List<String> regions;
Spinner spinner;

regionsArray=getResources().getStringArray(R.array.Country_array);
regions=new ArrayList<String>();
regions = new ArrayList<String>(Arrays.asList(regionsArray));

/* selected item will look like a spinner set from XML */
ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, regions);

spinnerArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(spinnerArrayAdapter);


/* Your ARRAY Defined in xml file */
<string-array name="Country_array">
  <item>India</item>
  <item>Japan</item>
  <item>China</item>
</string-array>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35624353

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档