如何解决如何在 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 举报,一经查实,本站将立刻删除。