【发布时间】:2017-08-28 18:41:34
【问题描述】:
尝试使用在创建片段后才检索到的数据填充微调器。测试数据在 OnCreateView 中工作:
datesSpinner = (Spinner)rootView.findViewById(R.id.calldatesspinner);
/*
String[] testData = { "Abc", "Def", "Ghi", "Jkl" };
ArrayList<String> xVals = new ArrayList<>();
for (int i = 0; i < testData.length; i++)
xVals.add(testData[i]);
dataAdapter = new ArrayAdapter<>(getActivity(), android.R.layout.simple_spinner_dropdown_item, testData);
datesSpinner.setAdapter(dataAdapter);
*/
但是当我在检索数据后尝试在微调器上设置适配器时,我没有收到任何错误,只是一个空白微调器?我注释掉了测试 ArrayAdapter,为数据创建了一个 ArrayAdapter 并给它一个新的 ArrayList,然后尝试像在 OnCreateView 中那样设置它:
public void setSpinnerAdapter() {
for (int i = 0; i < datesPulled.size(); i++) {
System.out.println("Populating spinner: " + datesPulled.get(i));
}
System.out.println("finished for loop");
dataAdapter = new ArrayAdapter<>(getActivity(), android.R.layout.simple_spinner_dropdown_item, datesPulled);
System.out.println("create array adapter");
datesSpinner.setAdapter(dataAdapter);
}
logcat 是
04-03 14:18:02.412 9671-9671/? I/System.out: Populating spinner: 2017-05-01
04-03 14:18:02.412 9671-9671/? I/System.out: Populating spinner: 2017-06-01
04-03 14:18:02.412 9671-9671/? I/System.out: Populating spinner: 2017-07-01
04-03 14:18:02.412 9671-9671/? I/System.out: Populating spinner: 2017-08-01
04-03 14:18:02.413 9671-9671/? I/System.out: finished for loop
我认为片段接口的活动存在问题,但 logcat 告诉我它工作正常。我尝试使用新的 ArrayList 清除测试适配器并重置它,留下第一个适配器并创建第二个适配器,notifyDataSetChanged() 等,但没有运气。出于某种原因,我无法创建/设置新的 ArrayAdapter 但我不明白为什么?
【问题讨论】:
-
调用片段
onViewCreated()中的setadapter()方法 -
你是在ui线程中设置适配器吗?
-
使用 onViewCreated 得到它,因为现在我可以看到创建的 ArrayAdapter。感谢@rafsanahmod007 的回复
标签: android android-fragments spinner android-arrayadapter