Android 从第二个微调器中的第一个微调器中获取所选项目,反之亦然

Android get selected item from first spinner in second one and vice versa

我的应用程序中有两个微调器,我想从第一个微调器中的第二个微调器获取所选值,反之亦然。

这是我的代码:

 ArrayAdapter<String> adp1 = new ArrayAdapter<>(this,R.layout.spinner_item, list);
        adp1.setDropDownViewResource(R.layout.my_spinnerlist);
        sp1.setAdapter(adp1);sp1.setSelected(false);
        sp1.setSelection(0,true);

        ArrayAdapter<String> adp2 = new ArrayAdapter<>(this,R.layout.spinner_item, list2);
        adp2.setDropDownViewResource(R.layout.my_spinnerlist);
        sp2.setAdapter(adp2);sp2.setSelected(false);
        sp2.setSelection(0,true);

 sp1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener()
        {
            @Override
            public void onItemSelected(AdapterView<?> arg0, View arg1, int position, long id) {

         String item1 = list.get(position);   String item2 = list2.get(position);
 Log.e("first spinner", item1); Log.e("second spinner", item2);
}

 sp2.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener()
        {
            @Override
            public void onItemSelected(AdapterView<?> arg0, View arg1, int position, long id) {

            String item1 = list.get(position);   String item2 = list2.get(position);
 Log.e("first spinner", item1); Log.e("second spinner", item2);
}

第一个微调器中的项目 1 工作正常,第二个微调器中的项目 2 显示正确的选定值。但是另一个微调器的值是错误的,因为它使用了当前微调器的(位置)。

那么如何显示另一个微调器的选定值或位置?

我也尝试过 sp2.getSelectedItem() 但没有成功。

我不清楚你想要达到的目标.. 无论如何,

如果你想在第一个中捕获第二个微调项。 创建两个全局变量

Int a1=0;
Int a2=0;

并像下面这样更改您的代码

 sp1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener()
    {
        @Override
        public void onItemSelected(AdapterView<?> arg0, View 
        arg1, int position, long id) {
     a1=position;
     String item1 = list.get(position);   
      String item2 = list2.get(a2);
     Log.e("first spinner", item1); Log.e("second spinner", item2);
 }

 sp2.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener()
    {
        @Override
        public void onItemSelected(AdapterView<?> arg0, View 
          arg1, int position, long id) {
        a2=position:;
        String item1 = list.get(a1);   
        String item2 = list2.get(position);
        Log.e("first spinner", item1); Log.e("second spinner", 
        item2);
}

我已经找到解决办法了,位置在范围内:

String item1 = String.valueOf(position);
String item2 = String.valueOf(sp2.getSelectedItemPosition()); 

在第二个微调器中:

String item1 = String.valueOf(sp1.getSelectedItemPosition()); 
String item2 = String.valueOf(position);

如果用户更改第一个或第二个微调器中的任何内容,则会填充一个实时列表。这就是为什么我想知道这个。