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);
如果用户更改第一个或第二个微调器中的任何内容,则会填充一个实时列表。这就是为什么我想知道这个。
我的应用程序中有两个微调器,我想从第一个微调器中的第二个微调器获取所选值,反之亦然。
这是我的代码:
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);
如果用户更改第一个或第二个微调器中的任何内容,则会填充一个实时列表。这就是为什么我想知道这个。