0

大量のコンテンツを含むリストビューがあり、リスト ビュー内のコンテンツをテキスト ファイルとして保存する方法を知りたいですか? データベースからすべてのコンテンツを取得しています。

4

3 に答える 3

2

配列のシリアル化を試してください (オブジェクトをシリアル化して戻すことができます)

    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();
    }
于 2012-11-15T23:55:51.583 に答える
1

ユーザーがクリックした行の内容を保存するとします。

ListActivity オーバーライド onListItemClick (ListView lv、View v、int 位置、long id) を使用している場合。次に、 String str = lv.getItemAtPosition(position).toString() は、行に含まれる文字列を取得できます。正確な実装に応じて、他の可能性が存在します。クリックしたビューにもアクセスできます。

データベースに既にそれがあり、そこから簡単にクエリして保存できるので、すべての行の内容を保存したくないと思います。

文字列を取得したら。新しいファイルを作成して書き込みます。

ファイルに書き込む 1 つの方法:

     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();
        }
于 2012-04-08T04:14:14.390 に答える
0

ファイルへの書き込みの仕組みについては十分に説明されていますが、以下についてさらに追加したいと思います。

データベースからすべてのコンテンツを取得しています

その場合、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();
}
于 2016-06-21T17:57:00.957 に答える