【问题标题】:How to create/set ArrayAdapter data on Spinner after Fragment is already created已创建 Fragment 后如何在 Spinner 上创建/设置 ArrayAdapter 数据
【发布时间】: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


【解决方案1】:

我认为你使用了错误的项目布局,试试这个:

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);

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-23
    • 1970-01-01
    • 2011-02-16
    • 2018-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多