安卓系统从第一个旋转器中选择项目到第二个旋转器,反之亦然。

问题描述 投票:0回答:2

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

这是我的代码。

 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);
}

第一个微调器中的item1和第二个微调器中的item2都能正常工作,显示出正确的选择值。但是来自另一个微调器的值是错误的,因为它使用了当前微调器的(位置)。

那么我怎样才能显示另一个微调器的选择值或位置呢?

我也试过用 sp2.getSelectedItem() 但运气不好。

android spinner
2个回答
1
投票

我不清楚你想实现什么...无论如何。

如果你想在第一个项目中捕捉第二个旋转器项目。创建两个全局变量

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);
}

0
投票

我已经找到了解决办法,因为这个位置在范围内。

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

和第二个微调器中。

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

如果用户在第一或第二微调器中改变了什么,就会弹出一个实时列表。这就是为什么我想知道这个问题。

© www.soinside.com 2019 - 2024. All rights reserved.