有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java我的列表只显示spinner中的前两项

我从服务器上得到一个包含两个时区的列表,分别是美国和加拿大。加拿大的Id为1,美国的Id为2。该列表包含字符串id和其他一些字符串。我需要在spinner中列出该字符串id,这就是为什么我要创建一个只包含我需要的字符串的新列表。 我把国家的id放在一个switch语句中,它应该把列表放在spinner中,它工作得很好。但它只显示列表中的前两项

for (int i = 0; i < list.size(); i++)
                listCountryId.add(list.get(0).getTimeZoneModelList().get(i).getId());

所以基本上我的想法是从服务器循环遍历我的列表,因为在那个列表中我总是只有两个列表,在这种情况下,我循环遍历第一个列表。这就是我硬编码的原因。当我调试时,我可以看到我的getTimeZoneModelList()包含完整的列表,但当我调试listCountryId()时,它只包含前两项

这是我的全部代码:

private void setUpSpinner() {
        switch (model.getCountry().getCoutryId()) {
            case 1:

                for (int i = 0; i < list.size(); i++)
                    listCountryId.add(list.get(0).getTimeZoneModelList().get(i).getId());
                ArrayAdapter<String> adapterMembers = new ArrayAdapter<>(context, 安卓.R.layout.simple_spinner_item, listCountryId);
                adapterMembers.setDropDownViewResource(安卓.R.layout.simple_spinner_dropdown_item);
                binding.timezoneSpinner.setAdapter(adapterMembers);

                Log.i(TAG, "lista idjeva: " + Arrays.toString(listCountryId.toArray()));
                break;
            case 2:
                for (int i = 0; i < list.size(); i++) {
                    listCountryId.add(list.get(1).getTimeZoneModelList().get(i).getId());
                }

                ArrayAdapter<String> adapter = new ArrayAdapter<>(
                        context, 安卓.R.layout.simple_spinner_item, listCountryId);

                adapter.setDropDownViewResource(安卓.R.layout.simple_spinner_dropdown_item);
                binding.timezoneSpinner.setAdapter(adapter);
                Log.i(TAG, "lista idjeva: " + Arrays.toString(listCountryId.toArray()));

                break;
        }
    }

共 (1) 个答案

  1. # 1 楼答案

    这是因为你的循环确实运行了两次。应该是的

    for (int i = 0; i < list.get(0).getTimeZoneModelList().size(); i++)
        listCountryId.add(list.get(0).getTimeZoneModelList().get(i).getId());
    

    更好的是:

    List<TimeZoneModel> timeZoneModelList = listCountryId.add(list.get(0).getTimeZoneModelList();
    for (int i = 0; i < timeZoneModelList.size(); i++)
            listCountryId.add(timeZoneModelList.get(i).getId());
    

    第二种方法更有效