微调器选择更新另一个微调器

时间:2018-06-08 14:28:38

标签: android

过去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到异步任务的所有内容都无济于事。

0 个答案:

没有答案