如何将一个listview的内容保存到android中的文本文件?
答
我asuming要保存被点击用户,该行的内容:
如果使用ListActivity覆盖onListItemClick(LV的ListView,视图V,INT位置,长ID)。然后String str = lv.getItemAtPosition(position).toString()可以给你包含在该行中的字符串。其他可能性取决于您的具体实施情况。您还可以访问被点击的视图。
我不认为你想保存所有行的内容,因为你已经在数据库中有这些内容,并且可以简单地从那里查询和保存。
一旦你有字符串。创建一个新文件并写入它。写作
一种方式提交:
try {
File f = File.createTempFile("file", ".txt", Environment.getExternalStorageDirectory());
FileWriter fw = new FileWriter(f);
fw.write(str);
fw.close();
} catch (IOException e) {
e.printStackTrace();
Toast.makeText(getApplicationContext(), "Error while saving file", Toast.LENGTH_LONG).show();
}
答
尝试数组序列(可以序列,并取回对象)
ObjectOutputStream out;
Object[] objs = new Object[yourListView.getCount()];
for (int i = 0 ; i < youeListView.getCount();i++) {
Object obj = (Object)yourListView.getItemAtPosition(i);
objs[i] = obj;
}
try {
out = new ObjectOutputStream(
new FileOutputStream(
new File(yourFile.txt)));
out.writeObject(objs);
out.flush();
out.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
+0
getItemAtPosition()不是一个好主意,因为如果项目没有出现在屏幕上,它将返回null。 – Dale 2016-06-21 17:51:21
答
写入文件的机制已覆盖好,但我想添加更多关于:
我从数据库中提取所有内容
在这种情况下,您可以从ListView中获取光标,然后使用SQLiteCursor.getItemAtPosition()
。
private String getCsvFromViewCursor(ListView myListView) {
StringBuilder builder = new StringBuilder();
SQLiteCursor cursor;
builder.append("\"Field 1\",\"Field 2\"\n");
for (int i = 0; i < myListView.getCount(); i++){
cursor = (SQLiteCursor) myListView.getItemAtPosition(i);
builder.append("\"").append(cursor.getString(0)).append("\",");
builder.append("\"").append(cursor.getString(1)).append("\"\n");
}
return builder.toString();
}
如果我想保存所有的信息,我该怎么做? – Christian 2012-04-09 13:38:48
您可以尝试:lv.getCount()获取总项目。然后循环所有项目以获取每行的内容。 lv.getItemAtPosition(位置)的ToString()。职位价值将从零到数。加起来所有的字符串并保存如上。 – user1318455 2012-04-09 23:06:11