过去4天我一直试图找到解决方案,而且似乎找不到任何东西,所以决定发布一个新问题。
我有2个微调器,其中一个依赖于另一个。第一个微调器是静态列表。第二个使用从数据库表填充的数组适配器。
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
if (((Integer) spinnerFabricType.getTag()) == i)
return;
spinnerFabricType.setTag(i);
Log.e("Status", "Fabric Type Selected");
//Cursor to retreive selected data item from adapter
colourList.clear();
if (spinnerFabricType.getItemAtPosition(i).equals("Venetia"))
colourList.addAll(venetiaColourList);
else if (spinnerFabricType.getItemAtPosition(i).equals("Satin"))
colourList.addAll(ribbonColourList);
colourAdapter.notifyDataSetChanged();
spinnerColour.setSelection(0);
}
当我进行选择时,这一切都正常,但我允许用户使用先前捕获的订单填充表单。
在这种情况下,我将第一个微调器设置为前一个顺序的结构类型。这将启动上面的听众并更改第二个微调器的列表。在下一行代码中,我将第二个微调器设置为上一个订单的颜色。但是,这始终默认为第1个值。
spinnerFabricType.setSelection(getIndexSpinner(spinnerFabricType, loadFabricType));
spinnerColour.setSelection(getIndexSpinner(spinnerColour, loadColour));
我想重用onItemSelectedListener中的逻辑,而不是重写加载脚本中的代码。
从我所看到的情况来看,onItemSelectedListener似乎没有在setSelection发生之前完成,这导致找不到先前的订单颜色。
我已尝试过从更改适配器类型到使用postDelayed到异步任务的所有内容都无济于事。