2013-03-25 98 views
-2

我正在尝试使用布局来获取我在Spinner中选择的所有项目。我正在动态创建Spinner,并动态地将项目添加到Spinner,所以这就是我在这里使用布局获取ChildElement的原因。使用StringBuilder追加字符串

下面是代码: -

int count = layout.getChildCount(); 

StringBuilder jsonString = new StringBuilder(); 

View v = null; 
int j = 1; 
for(int i=0; i<count; i++) { 
    v = layout.getChildAt(i); 

    if(v instanceof Spinner) { 
     jsonString.append("["+j+":"+((Spinner) v).getSelectedItem()+"]"); 

     j++; 
    } 
} 

问题陈述: -

这是一个简单的字符串操作问题。

我目前有5 Spinner。所以我想这样做jsonString

[1:CS,2:EE,3:RE,4:TT,5:UU] 

这里CS,EE,RE,TT,UU是我在5 Spinner

但是我的代码已选择的内容,我的jsonString是越来越像显示这 -

[1:CS][2:EE][3:RE][4:TT][5:UU] 

我怎样才能让jsonString像我想要的方式。我确定,我使用append的方式不正确。

任何人都可以帮助我吗?谢谢您的帮助。

+0

你上面写的代码吗?因为如果你不想要右括号,你不应该明确地添加它们。无论哪种情况,您试图制作的“json”都是无效的。 – 323go 2013-03-25 01:05:18

回答

2

该解决方案看起来很简单。你已经把'['和']'放在循环的append中,每次迭代都会附加方括号。试试以下内容(我还没有测试过)

int count = layout.getChildCount(); 

    StringBuilder jsonString = new StringBuilder(); 

    View v = null; 
    int j = 1; 
    jsonString.append("["); 
    for(int i=0; i<count; i++) { 
     v = layout.getChildAt(i); 

     if(v instanceof Spinner) { 
      jsonString.append(j+":"+((Spinner) v).getSelectedItem()); 

     if (j != count) //if this is not the last spinner 
      jsonString.append(","); 
     j++; 
     } 
    } 
    jsonString.append("]");