如何在创建Fragment后在Spinner上创建/设置ArrayAdapter数据

时间:2017-04-03 19:05:13

标签: android android-fragments spinner android-arrayadapter

尝试使用在创建片段之后检索的数据填充微调器。测试数据在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&amp;给它一个新的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告诉我它工作正常。我尝试用&amp;清除测试适配器使用新的ArrayList重置它,保留第一个适配器&amp;创建第二个适配器,notifyDataSetChanged()等,但没有运气。出于某种原因,我无法创建/设置新的ArrayAdapter,但我不明白为什么?

1 个答案:

答案 0 :(得分:0)

我认为您对项目使用了错误的布局,请尝试以下方法:

ArrayAdapter<String> adapter = new ArrayAdapter<String>(
        this,
        android.R.layout.simple_list_item_1,
        testData
);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);

请注意,微调器需要扩展视图和折叠视图的布局。