为什么我的简单for循环不起作用?

时间:2014-06-07 18:15:20

标签: android for-loop arraylist android-tablelayout

我有这个for循环:

for(int i=0;i<playerList.size();i++){
            TableRow row = new TableRow(this);
            String sPlayerName = playerList.get(i);
            TextView playerName = new TextView(this);
            playerName.setText(sPlayerName);
            row.addView(playerName);
            table.addView(row);
        }

其中playerList是字符串的ArrayList,table是TableLayout。 我想要这行代码做的是从ArrayList播放器列表中获取信息并将其放入TableLayout表中。 问题是当我向playerList添加字符串时,例如我添加“Bob”,“James”和“Dylan”,我想要输出的表是:

Bob
James
Dylan

但获得输出的表是:

Bob
Bob
James
Bob
James
Dylan

该表似乎从第一个名称开始,而不是直接进入下一个名称,我不明白为什么会发生这种情况。任何帮助,将不胜感激。感谢。

编辑:我找到了问题的解决方案,它与上面的代码无关。问题出在我的程序中的其他代码中。

2 个答案:

答案 0 :(得分:1)

您正在添加重复的玩家。因此,您需要创建一个查找功能,以检查您要添加的播放器是否已在表格中。如果玩家是那么你可以更新播放器的视图 - 因为你必须删除现有的播放器行并在此行中插入更新的播放器详细信息。

你可以这样做:

for(int i=0;i<playerList.size();i++){
    String sPlayerName = playerList.get(i);
    if(!find_player(sPlayerName)) {
        TableRow row = new TableRow(this);
        TextView playerName = new TextView(this);
        playerName.setText(sPlayerName);
        row.addView(playerName);
        table.addView(row);
    }       
}

答案 1 :(得分:0)

看起来每当您附加到列表并调用for循环时,您也会在table中已存在的视图之后添加视图。

在循环之前调用table.removeAllViews()以清除表格。