将对象添加到StringBuilder

时间:2012-07-24 00:21:08

标签: java android

我对Android开发很陌生,我想要做的是在ArrayList中显示TextView的内容。

我一直在尝试将ArrayList转换为Array,然后将每个项目附加到StringBuilder。但是,StringBuilder似乎不允许我在Object附加Array。谁能告诉我为什么,或者实际上提供更好的解决方案?

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    // TODO Auto-generated method stub
    super.onActivityResult(requestCode, resultCode, data);
    ArrayList<String> temp = new ArrayList<String>();
    temp = data.getStringArrayListExtra("intentReturn");
    Object obj[] = temp.toArray();
    for(int i = 0; i < obj.length; i++){
        sBuilder.append((String)obj[i]); //This is the line which crashes the app
        if(i < obj.length - 1){
            sBuilder.append(", ");
        }
    }
    tvResult.setText(sBuilder.toString());
}

非常感谢提前。

3 个答案:

答案 0 :(得分:1)

将您的sBuilder附加行更改为:

sBuilder.append(obj[i].toString());

这样你就不会尝试将Object转换为String,而是获取Object的String表示。

The documentation for Object.toString()

答案 1 :(得分:1)

1。没有了解您转换 ArrayList to Array的理由。

2。以这种方式尝试... 我直接将ArrayList中的String附加到StringBuilder,使用For-Each循环

<强>例如

for (String te : temp){
    sBuilder.append(te);
}

答案 2 :(得分:0)

显然我忘了添加StringBuilder sBuilder = new StringBuilder(); - 傻新手!感谢Jeffrey的代码清理,非常感谢!

为了提供足够的答案,这是我的新代码:

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    // TODO Auto-generated method stub
    super.onActivityResult(requestCode, resultCode, data);
    StringBuilder sBuilder = new StringBuilder();
    ArrayList<String> temp = new ArrayList<String>();
    temp = data.getStringArrayListExtra("intentReturn");
    for(int i = 0; i < temp.size(); i++){
        sBuilder.append(temp.get(i).toString());
        if(i < temp.size() - 1){
            sBuilder.append(", ");
        }
    }
    tvResult.setText(sBuilder.toString());
}