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

How to store stringbuffer into string array?

您好,我正在读取 sqlite 数据库数据并将其存储到字符串缓冲区中。我想在 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]);
}

有什么办法可以做到这一点。提前致谢。

你可以尝试用这个替换你的拆分调用:

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

您似乎是在将数据添加到末尾带有换行符的缓冲区中。拆分它们应该是这样的: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);

这毫无意义。如果要将数据存储在数组中,首先不要将其存储在 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++;
}