如何将stringbuffer存储到字符串数组中?

时间:2015-03-12 12:57:33

标签: java arrays sqlite android-listview stringbuffer

您好我正在阅读sqlite db数据并存储到字符串缓冲区中。我想在android的列表视图中显示它。我面临的问题很少。请帮我解决这个问题。

String studentno=cursor.getString(1);
String date=cursor.getString(2);
buffer.append("student: "+studentno+"  Time:"+date+"\n");
String data=buffer.toString();
Log.d("student: "+studentno+"  Time:"+date);

输出为:student: 1234 Time:12:13 student: 1234 Time:12:14 student: 1234 Time:12:15

我想像这样存储字符串缓冲区 values[0]=student: 1234 Time:12:13 values[1]=student: 1234 Time:12:14 values[2]=student: 1234 Time:12:15

我尝试了以下编码,但它不起作用。

String[] values = data.split("");
for (int i = 0; i < values.length; ++i) {
list.add(values[i]);
}

有没有办法做到这一点。提前谢谢。

3 个答案:

答案 0 :(得分:2)

您似乎在最后使用新的行分隔符将数据添加到缓冲区中。拆分它们应如下所示:data.split("\n");

然而,这似乎不是一个好主意。主要是因为你可以有一个非常大的数据集和拆分是一个昂贵的操作。

为什么不创建ArrayList<String>并调用list.add("student: " + studentno + " Time: " + date)或其他更有效的结构?

代码:

List<String> list = new ArrayList<String>();

String studentno=cursor.getString(1);
String date=cursor.getString(2);
list.add("student: " + studentno + " Time: " + date);

答案 1 :(得分:1)

这没有任何意义。如果要将数据存储在数组中,请不要将其存储在StringBuffer中。将其直接存储在数组中。

您必须有一些循环来读取数据:

String[] arr = new String [...];
int count = 0;
while (cursor.next() && count < arr.length) {
    String studentno=cursor.getString(1);
    String date=cursor.getString(2);
    arr[count] = "student: "+studentno+"  Time:"+date+"\n";
    count++;
}

答案 2 :(得分:0)

您可以尝试用以下方法替换您的拆分:

String[] values = data.split("\n");