在循环中向ArrayList添加项

时间:2015-09-21 22:13:37

标签: java arraylist

所以我正在尝试使用此类模板将项目(必须是静态的)添加到ArrayList: AllEventInformationStatic.java:

  await newCoreView.Dispatcher.RunAsync(  
    CoreDispatcherPriority.Normal,  
    () =>  
    {  
      newAppView = ApplicationView.GetForCurrentView();  
      Window.Current.Content = new Frame();
      (Window.Current.Content as Frame).Navigate(typeof(<your_page>));
      Window.Current.Activate();  
    });  

AllEventResponseStatic.java:

Frame

这是填充ArrayList的迭代:

public class AllEventInformationStatic {

    public static int id;
    public static String name;
    public static String type;
    public static String date;
    public static String desc;
    public static String location;

    public AllEventInformationStatic(int id, String name, String type, String date, String desc, String location)
    {
        AllEventInformationStatic.id = id;
        AllEventInformationStatic.name = name;
        AllEventInformationStatic.type = type;
        AllEventInformationStatic.date = date;
        AllEventInformationStatic.desc = desc;
        AllEventInformationStatic.location = location;
    }
}

因此变量名称显示为“bowling”,但name_bis为Null。 似乎它只是在迭代后清除整个arraylist并且我不知道为什么......

如果你知道问题出在哪里?

1 个答案:

答案 0 :(得分:0)

假设你的意思是allEventResponseStatic处于循环条件而不是allEventResponse。

 AllEventResponseStatic.events = new ArrayList<AllEventInformationStatic>();

在此调用之后,列表的大小为零,因此永远不会调用循环。因此,在循环

之后,您在索引0上获得null
for (int i = 0; i < allEventResponseStatic.events.size(); i++)
{
    AllEventResponseStatic.events.
            add(new AllEventInformationStatic(42, "bowling",
                    "event", "11/12/2015",
                    "enjoy it", "paris"));

    String name = AllEventResponseStatic.events.get(0).name;
}

此外,请研究 static 关键字的作用,因为它在这里没用,并且会导致代码中出现更大的问题。