【发布时间】:2016-10-16 07:00:40
【问题描述】:
我有一个有许多级联微调器的活动,在选择第一个微调器后,第二个微调器初始化并填充数据,在从第二个微调器中选择项目后,第三个微调器初始化并填充数据等等。
对于每个微调器,我都会像这样创建它们并且它是迭代的:
public ArrayList<MaterialSpinner> spinnerlist = new ArrayList<>();
public void createView(){
final MaterialSpinner spinner = new MaterialSpinner(context);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener(){//...after select item next spinner creates with calling createView() iteratively}
loadSpinnerData(); // set adapter and more
spinnerlist.add(spinner);
}
当用户选择时,一切都顺利,但不幸的是,当我动态使用 setSelection(positionOfItem) 时
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener()
不要打电话。我不知道为什么会这样。
for (int i = 0; i < some_value; i++) {
int positionOfItem = get_proper_position;
spinnerList.get(i).setSelection(positionOfItem); //this not trigger onItemSelect!
}
问题就在这里。第一次微调器大小为 1,但在 setselection 之后,侦听器不调用,第二个微调器不创建。
我还认为这是因为耗时的操作,所以尝试使用 run-able 并发布一些延迟,但它不起作用。
【问题讨论】:
-
我假设您在初始化 setOnItemSelectedListner 之前正在执行 setSelection。它总是应该调用 setOnItemSelectedListner。请检查该场景并分享您的代码
-
@MiralBhalani 我更新了问题。第一个微调器已创建并初始化并添加到列表中,但它在选择时不起作用
-
你能提供一些关于 categoriesId 的信息吗?
-
能否请您尝试移动 loadSpinnerData();在 spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() 之前
-
onItemSelecteListner 只会在选择任何与前一个不同的新项目时调用loadSpinnerData()
标签: android select spinner onitemclicklistener