微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 Adroid Studio 中获取嵌套微调器的索引?

如何解决如何在 Adroid Studio 中获取嵌套微调器的索引?

我想要做的是一个城市和另一个城市之间的公里计算器。

我已经实现了,根据第一个微调器中选择的州,显示与该州对应的城市。现在如何获取所选城市的位置,以便根据始发城市和目的地城市计算距离。

package com.example.mainspinner;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity implements AdapterView.OnItemSelectedListener {

    TextView txtv1;
    TextView txtv2;
    Spinner combo1,combo2,combo3,combo4;
    ArrayAdapter<String> a1,a2,a3,a4,a5,a6,a7,a8;
    String Sp_Edo_Origen [] = {"Ohio","California","Georgia"};
    String g1_cd_Origen [] = {"Columbus","Dayton","Cincinnati";
    String g2_cd_Origen [] = {"San Diego","Los Angeles","San Francisco"};
    String g3_cd_Origen [] = {"Atlanta","Savannah"};
    String Sp_Edo_Dest [] = {"Puebla","Guanajuato","Veracruz"};
    String g1_cd_Dest [] = {"Ohio","Georgia"};
    String g2_cd_Dest [] = {"San Diego","San Francisco"};
    String g3_cd_Dest [] = {"Atlanta","Savannah"};

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        txtv1 = (TextView)findViewById(R.id.view1);
        txtv2 = (TextView)findViewById(R.id.view2);
        combo1 = (Spinner)findViewById(R.id.Sp_Edo_Origen);
        combo2 = (Spinner)findViewById(R.id.Sp_Cd_Origen);
        combo3 = (Spinner)findViewById(R.id.Sp_Edo_Dest);
        combo4 = (Spinner)findViewById(R.id.Sp_Cd_Dest);
        combo1.setonItemSelectedListener(this);
        combo2.setonItemSelectedListener(this);
        combo3.setonItemSelectedListener(this);
        combo4.setonItemSelectedListener(this);
        a1 = new ArrayAdapter<>(this,android.R.layout.simple_spinner_item,Sp_Edo_Origen);
        a2 = new ArrayAdapter<>(this,g1_cd_Origen);
        a3 = new ArrayAdapter<>(this,g2_cd_Origen);
        a4 = new ArrayAdapter<>(this,g3_cd_Origen);
        a5 = new ArrayAdapter<>(this,Sp_Edo_Dest);
        a6 = new ArrayAdapter<>(this,g1_cd_Dest);
        a7 = new ArrayAdapter<>(this,g2_cd_Dest);
        a8 = new ArrayAdapter<>(this,g3_cd_Dest);
        combo1.setAdapter(a1);
        //combo2.setAdapter(a2);
        combo3.setAdapter(a5);
        //combo4.setAdapter(a6);
    }

    @Override
    public void onItemSelected(AdapterView<?> a,View v,int p,long id) {
        //Toast.makeText(this,"Pos: "+p,Toast.LENGTH_SHORT).show();
        //Toast.makeText(this,"Valor: "+Sp_Edo_Origen[p],"Valor: "+a.getLastVisiblePosition();,Toast.LENGTH_SHORT).show();



            if (a.getId() == R.id.Sp_Edo_Origen) {

                switch (p) {
                    case 0:
                        combo2.setAdapter(a2);
                        //Toast.makeText(this,"Valor: "+a.getLastVisiblePosition(),Toast.LENGTH_SHORT).show();
                        //caseta = 50 + 2;
                        //String resultado = String.valueOf(caseta);
                        // txtv1.setText(resultado);
                        break;
                    case 1:
                        combo2.setAdapter(a3);
                        break;
                    case 2:
                        combo2.setAdapter(a4);
                        break;
                }
            }

            if (a.getId() == R.id.Sp_Edo_Dest){

                switch (p) {
                    case 0:
                        combo4.setAdapter(a2);
                        break;
                    case 1:
                        combo4.setAdapter(a3);
                        break;
                    case 2:
                        combo4.setAdapter(a4);
                        break;
                }

                if (a.getId() == R.id.Sp_Cd_Dest) {
                    }
                }
        }

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

    }
}

解决方法

在方法onItemSelected里面,你可以找到视图的id,它是这个方法的第二个参数。将此 id 与城市微调器的 id 进行比较,如果匹配,则在您填充城市适配器的城市列表中找到被选中的位置(即第三个参数 int p)。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。