【问题标题】:Iterator String Array not grabbing all elements迭代器字符串数组未获取所有元素
【发布时间】:2014-03-02 17:09:45
【问题描述】:

这个逻辑对我来说很有意义,我无法理解为什么它只会打印出最后一个元素,但由于某种原因,这段代码运行良好,除了我的微调器中的每个元素都显示 Course: 5 和“ShortCourseDesc6”为每个。每次都应该递增。

public void setListData()
{       
    for (int i = 0; i < 7; i++) {

        List<String> imageURLArray = new ArrayList<String>();
        imageURLArray.add("ShortCourseDesc1");
        imageURLArray.add("ShortCourseDesc2");
        imageURLArray.add("ShortCourseDesc3");
        imageURLArray.add("ShortCourseDesc4");
        imageURLArray.add("ShortCourseDesc5");
        imageURLArray.add("ShortCourseDesc6");

        Iterator<String> iter = imageURLArray.iterator();

        final SpinnerModel sched = new SpinnerModel();

          /******* Firstly take data in model object ******/
        for(int z = 0; iter.hasNext(); z++) 
        {
            sched.setCourseName("Course: " + z);
            sched.setImage("image" + z);
            sched.setCourseShortDesc(iter.next());
        }

        /******** Take Model Object in ArrayList **********/
        CustomListViewValuesArr.add(sched);
    }

  }

【问题讨论】:

  • 根据您当前的代码 ShortCourseDesc1 到 ShortCourseDesc6 将打印 6 次。我没有看到只会打印 6 个

标签: java android arrays iterator


【解决方案1】:

你一遍又一遍地更新同一个微调器,而我的理解是正确的,SpinnerModel 是一个接口,那么你如何实例化它呢?我认为解决方案是使用SpinnerListModel (http://docs.oracle.com/javase/7/docs/api/javax/swing/SpinnerListModel.html):

SpinnerModel model = new SpinnerListModel(Arrays.asList("Hello", "This", "Is", "A", "Spinner", "List", "Model"));

【讨论】:

    【解决方案2】:

    你必须有更多的微调器。 :) 因为您只更新 sched SpinnerModel 对象。然后在遍历所有元素后打印它,这样你就得到了 ShortCourseDesc6 和 5。 尝试将您的代码更改为:

    public class SpinnerData{
        private String courseName;
        private String image;
        private String courseShortDesc;
       //getters and setters...
    
    }
    
     List<SpinnerData> schedList = new ArrayList<SpinnerData>();
    
              /******* Firstly take data in model object ******/
            for(int z = 0; iter.hasNext(); z++) 
            {
                SpinnerDatasched= new SpinnerData();
                sched.setCourseName("Course: " + z+1);
                sched.setImage("image" + z+1);
                sched.setCourseShortDesc(iter.next());
                schedList.add(sched);
            }
    SpinnerListModel spinnerListModel = new SpinnerListModel(schedList);
    

    或者简单地说...如果我的建议有误,请尝试另一个

      /******* Firstly take data in model object ******/
    for(int z = 0; iter.hasNext(); z++) 
    {
        SpinnerModel sched = new SpinnerModel();
        sched.setCourseName("Course: " + z+1);
        sched.setImage("image" + z+1);
        sched.setCourseShortDesc(iter.next());
        CustomListViewValuesArr.add(sched);
    } 
    

    【讨论】:

    • 不太清楚你的意思,如何向微调器添加更多微调器?这正是打印“Course: 5 and ShortCourseDesc6”6 次的内容
    • 我已经放了两个适合你的版本。
    • 它不喜欢“SpinnerListModel”,您的意思是“SpinnerModel”还是“List”?
    • Spinner 列表模型是来自 java swing 的一个类。 SpinnerModel 是一个抽象类,因此您无法对其进行初始化。因为在java中抽象类不能使用'new'来创建。先看看我的清单,我在那里实现了你的模型类 SpinnerData。
    猜你喜欢
    • 2023-02-22
    • 2017-10-11
    • 1970-01-01
    • 2015-03-18
    • 2017-10-28
    • 1970-01-01
    • 2021-11-22
    • 1970-01-01
    • 2012-01-06
    相关资源
    最近更新 更多