StringBuilder相关问题

时间:2011-03-03 15:44:59

标签: android

我有以下代码,其中,我从sqlite数据库中获取数据。每当数据升级时我都能很好地获得所有值,但无论何时数据升级,都无法升级存储在StringBuilder中的值.StringBuilder显示数据库的第一个数据。

 private void showData(Cursor cursor) {

StringBuilder stbuilder = new StringBuilder();
    while(cursor.moveToNext())
    {
         start_time = cursor.getString(1);
         end_time = cursor.getString(2);
         duration_time = cursor.getString(3);
         phone_option = cursor.getString(4);
         phone_mode = cursor.getString(5);
         stbuilder.append(start_time+" "+end_time+" "+duration_time+" "+phone_option+" "+phone_mode);
        Log.i("STARTtttDB", ""+start_time);
    Log.i("enddddDB", ""+end_time);
    Log.i("duratonnn", ""+duration_time);
    Log.i("OpTIONnnnn",""+phone_option);
    Log.i("M O D E ",""+phone_mode);
    String data=stbuilder.toString();
    Log.i("Data OUtput",data);

}

2 个答案:

答案 0 :(得分:1)

您需要通过调用setLength(0);

来重置StringBuilder
while(cursor.moveToNext())
{
    stBuilder.setLength(0);
    .....
}

答案 1 :(得分:1)

您应该为每次迭代创建一个新的StringBuilder ,或者使用以下命令重置它:

stBuilder.setLength(0)

此外,不是在StringBuilder.append()内部使用字符串连接(+),而是你应该有一系列追加

stBuilder.append(start_time);
stBuilder.append(" ");
stBuilder.append(end_time);
...

另请注意,您可以安全地放弃使用StringBuilder ,因为编译器无论如何都会使用StringBuilder优化字符串连接。这是我找到的performance study