2012-04-08 20 views

答えて

1

はあなたがユーザーによってクリックされた行の内容を保存したい:

もしListActivityオーバーライドonListItemClick(リストビューLV、ビュー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(); 
     } 
+1

すべての情報を保存したい場合は、どうすればよいですか? – Christian

+0

を試すことができます:lv.getCount()すべての項目をループして各行の内容を取得します。 lv.getItemAtPosition(position).toString()。位置の値は0から数えます。すべての文字列を追加し、上記のように保存します。 – user1318455

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(); 
    } 
+0

getItemAtPosition()は、項目が画面に表示されていない場合はnullを返すので、良い考えではありません。 – Dale

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(); 
} 
関連する問題