【问题标题】:How to get the index of a nested spinner in Adroid Studio?如何在 Android Studio 中获取嵌套微调器的索引?
【发布时间】:2021-01-05 16:22:11
【问题描述】:

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

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

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",  "California", "Georgia"};
    String g2_cd_Dest [] = {"San Diego", "Los Angeles", "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, android.R.layout.simple_spinner_item, g1_cd_Origen);
        a3 = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, g2_cd_Origen);
        a4 = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, g3_cd_Origen);
        a5 = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, Sp_Edo_Dest);
        a6 = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, g1_cd_Dest);
        a7 = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, g2_cd_Dest);
        a8 = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, 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], Toast.LENGTH_SHORT).show();
        //Toast.makeText(this, "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) {

    }
}

【问题讨论】:

    标签: java android-studio indexing nested spinner


    【解决方案1】:

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

    【讨论】:

    • 先生,谢谢你,你能给我看一段我如何实现这个的代码吗?请
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多