Java 如果其他微调器已经选择了项目,如何不显示该项目以供其他微调器选择

Java 如果其他微调器已经选择了项目,如何不显示该项目以供其他微调器选择,java,android,android-spinner,Java,Android,Android Spinner,我正在创建一个包含TextView和微调器的动态视图。我有一个必须在微调器中显示的项目数组。现在,举个例子,SpinnerA显示列表中的item1,所以我不希望SpinnerB为选择显示item1。同样,如果SpinnerB选择了item3,则SpinnerA不应显示该选择的item3。 最后,我想要的是,已经被一个微调器选中的项目不应该被任何其他微调器选中 编辑:我收到一个JSON响应,其中包含产品计数。在此基础上,我将创建包含微调器的动态视图,并将产品的值自动填充到微调器中。另外,单击添加更

我正在创建一个包含TextView和微调器的动态视图。我有一个必须在微调器中显示的项目数组。现在,举个例子,SpinnerA显示列表中的item1,所以我不希望SpinnerB为选择显示item1。同样,如果SpinnerB选择了item3,则SpinnerA不应显示该选择的item3。 最后,我想要的是,已经被一个微调器选中的项目不应该被任何其他微调器选中

编辑:我收到一个JSON响应,其中包含产品计数。在此基础上,我将创建包含微调器的动态视图,并将产品的值自动填充到微调器中。另外,单击添加更多按钮,我将通过添加更多动态视图来简化操作。因此,现在的情况是,一个微调器中的预选值应在任何其他微调器中可见,以供选择。我在下面提到了我布局的一个图像URL。
请帮我解释一下逻辑。

我有一个单微调器和一个侦听器,如果没有,你必须再添加一个swich

    @Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
    if(spinnerTextFromFirst ==String.valueOf(parent.getItemAtPosition(position));

}
@覆盖
已选择公共视图(AdapterView父视图、视图视图、整型位置、长id){
if(spinnerTextFromFirst==String.valueOf(parent.getItemAtPosition(position));
}
如果你现在想显示这些项目 您需要添加整数列表,并用一个条件重新加载adpters

        for (int j = 0; j < listFromAdapter.length - 1; j++) {
        for (int i = 0; i < list.length - 1l i++){
            if (list[i])!=j){
                addToNewListWhichWillBeYourAdapter();
            }
        }
    }
for(int j=0;j
最简单的方法是在选择spinnerA项目时刷新spinnerB中的项目

final List<String> items = new ArrayList<String>();
items.add("one");
items.add("two");
items.add("three");

final List<String> itemsB = new ArrayList<String>(items);
final List<String> itemsA = new ArrayList<String>(items);

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

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

boolean isFirstCallSpinnerA = true;
boolean isFirstCallSpinnerB = true;

spinnerA.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
    public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) { 
      // onItemSelected is always called when OnItemSelectedListener created.
      // so, ignore first call.
      if(isFirstCallSpinnerA) {
        isFirstCallSpinnerA = false;
        return;
      }

      // clear spinner items b
      // then add again
      itemsB.clear();
      itemsB.addAll(items); 
      itemsB.remove(position);
      adapterB.notifyDataSetChanged();
    } 

    public void onNothingSelected(AdapterView<?> adapterView) {
        return;
    } 
}); 

spinnerB.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
    public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) { 
      if(isFirstCallSpinnerB) {
        isFirstCallSpinnerB = false;
        return;
      }

      // clear spinner items A
      // then add again
      itemsA.clear();
      itemsA.addAll(items); 
      itemsA.remove(position);
      adapterA.notifyDataSetChanged();
    } 

    public void onNothingSelected(AdapterView<?> adapterView) {
        return;
    } 
}); 
final List items=new ArrayList();
项目。添加(“一”);
项目。添加(“两”);
项目。添加(“三”);
最终列表项B=新的ArrayList(项);
最终列表项目a=新的ArrayList(项目);
ArrayAdapter Adapter=新的ArrayAdapter(此,
android.R.layout.simple_微调器_项,itemsA);
ArrayAdapter Adapter=新的ArrayAdapter(此,
android.R.layout.simple_微调器_项,itemsB);
布尔值isFirstCallSpinnerA=true;
布尔值isFirstCallSpinnerB=true;
spinnerA.setOnItemSelectedListener(新的AdapterView.OnItemSelectedListener(){
已选择公共视图(AdapterView AdapterView,View视图,int i,long l){
//创建OnItemSelectedListener时始终调用onItemSelected。
//所以,忽略第一个电话。
如果(isFirstCallSpinnerA){
isFirstCallSpinnerA=false;
返回;
}
//清除微调器项b
//然后再加一次
项目b.clear();
项目b.添加所有(项目);
项目b.移除(位置);
adapterB.notifyDataSetChanged();
} 
未选择公共无效(AdapterView AdapterView){
返回;
} 
}); 
spinnerB.setOnItemSelectedListener(新的AdapterView.OnItemSelectedListener(){
已选择公共视图(AdapterView AdapterView,View视图,int i,long l){
如果(isFirstCallSpinnerB){
isFirstCallSpinnerB=假;
返回;
}
//清除微调器项目A
//然后再加一次
itemsA.clear();
项目a.添加所有(项目);
项目a.移除(位置);
adapterA.notifyDataSetChanged();
} 
未选择公共无效(AdapterView AdapterView){
返回;
} 
}); 

我无法确认上述代码是否有效。您还需要临时保留spinnerA和spinnerB的所选项目,以防保留所选项目

这可能对您有用不幸的是,我有一个不显示itemHi的要求,感谢您的回复,但我将根据json响应创建微调器,其范围从0到20个微调器,因此在这种情况下,我将如何检查valueHi,感谢您的回复,但我的疑问是:我正在基于json响应生成动态视图,因此可以生成0到20个微调器