2012-04-08 12 views

Antwort

1

Ich asuming Sie den Inhalt der Zeile zu speichern, die vom Benutzer angeklickt wurde:

Bei der Verwendung von ListActivity Überschreibung onListItemClick (Listview-lv, Blick v, int Position, long id). Dann kann String str = lv.getItemAtPosition (position) .toString() Ihnen den in der Zeile enthaltenen String geben. Abhängig von Ihrer genauen Implementierung gibt es weitere Möglichkeiten. Sie haben auch Zugriff auf die Ansicht, auf die geklickt wurde.

Ich glaube nicht, dass Sie den Inhalt aller Zeilen speichern möchten, wie Sie bereits in Ihrer Datenbank haben und einfach abfragen und speichern können.

Sobald Sie die Zeichenfolge haben. Erstellen Sie eine neue Datei und schreiben Sie darauf.

Eine Möglichkeit, Schreiben in die Datei:

 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

Wenn ich alle Informationen speichern wollte, wie würde ich das tun? – Christian

+0

können Sie versuchen: lv.getCount() für die gesamten Artikel. Schleife dann für alle Elemente, um den Inhalt jeder Zeile zu erhalten. lv.getItemAtPosition (position) .toString(). Wert der Position wäre von Null bis zu zählen. addieren Sie alle Zeichenfolgen und speichern Sie wie oben. – user1318455

2

Try Array Serialisierung (Sie können serialisiert und Objekte zurück)

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() ist keine gute Idee, weil es null zurückgibt, wenn das Element nicht auf dem Bildschirm dargestellt wurde. – Dale

0

Die Mechanik in eine Datei zu schreiben, gut abgedeckt sind, aber Ich möchte hinzufügen mehr über:

Ich ziehe alle Inhalte aus einer Datenbank

In diesem Fall können Sie den Cursor aus Ihrer ListView abrufen und dann SQLiteCursor.getItemAtPosition() verwenden.

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(); 
} 
Verwandte Themen