无法访问的代码 - 不应该无法访问

时间:2014-01-01 15:44:27

标签: java android eclipse loops arraylist

我想填充自定义列表视图,从文件中读取数据。使用方法ReadPeopleDetails读取文件。这将返回一个arraylist,然后我使用循环获取名称字符串并将其放入arraylist people_name。

然而,显然final ArrayAdapter适配器线是无法访问的,可能是因为for循环。第二双眼睛可以告诉我为什么会这样吗?

我认为for循环将结束(长度由arraylist的长度指定)

代码:

public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.add_party__people_list, menu);
    ArrayList<PeopleDetails> people_list = Readpeopledetails();
    ArrayList<String> people_name = null; ///this will catch the names from the above line, and put them into
    ///an arraylist for use in populating the ListView
    int i = people_list.size();
    //int j; acts as counter in iterator system
    PeopleDetails[] people_array = (PeopleDetails[]) people_list.toArray();
    for(int j = people_list.size(); /*not using termination*/ ; j++ ){
        people_name.add(people_array[j].name);

    }

    final ArrayAdapter adapter = new ArrayAdapter(this, R.layout.person_list_item, people_name);
    return true;
}

3 个答案:

答案 0 :(得分:3)

for(int j = people_list.size(); /*not using termination - SO LOOP WONT END*/ ; j++ ){

这是从列表的末尾开始并从那里开始递增,因此它将永远持续下去。你可能想要......

for(int j = 0; j < i ; j++ ){

答案 1 :(得分:1)

没有结束循环的条件。所以它现在是一个无限循环..所以下一行是无法到达的

做类似

的事情
for(int j = 0; j< people_list.size(); j++ ){
        people_name.add(people_array[j].name);

    }

似乎你是java的新手。要详细了解for循环,请参阅文档here

答案 2 :(得分:0)

除了你的循环没有终止之外,people_name永远不会被赋予一个ArrayList,所以当你试图在它上面调用add方法时你会得到一个NullPointerException。