您好我正在阅读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]);
}
有没有办法做到这一点。提前谢谢。
答案 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");