2012-04-08 3 views

답변

1

을 사용하면 사용자가 클릭 된 행의 내용을 저장하려면 :

하면 ListActivity 재정의 onListItemClick (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(); 
     } 
+1

모든 정보를 저장하려면 어떻게해야합니까? – Christian

+0

시도해 볼 수 있습니다 : 전체 항목에 대해 lv.getCount(). 모든 항목을 루프하여 각 행의 내용을 가져옵니다. lv.getItemAtPosition (position) .toString(). position 값은 0에서부터 count까지입니다. 모든 문자열을 더하고 위와 같이 저장하십시오. – 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(); 
} 
관련 문제