2016-06-15 54 views
1

我對Android Studio比較陌生。基本上我想要做的是爲QR掃描儀創建一種歷史文件。我掃描的任何內容都會放入History.txt文件中。它工作但不是我想要的方式。這是第一次掃描後,檢查歷史的結果:將文本文件讀入ListView(應用程序添加到ListView兩次)?

Result of First Scan

這是當我檢查了第二次掃描會發生什麼:

Result of Second Scan

這是我的OutputWriter代碼:

try { 
    OutputStreamWriter outputStreamWriter = new OutputStreamWriter(openFileOutput("History.txt", Context.MODE_APPEND)); 
    outputStreamWriter.write(rawResult.getText()); // the scan result 
    outputStreamWriter.append("\n\r"); 
    outputStreamWriter.close(); 

} catch (IOException e) { 
    Log.e("Exception", "File write failed: " + e.toString()); 
} 

這是顯示歷史記錄的活動:

public class ResultsActivity extends AppCompatActivity { 

    ListView ResultsListView; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_results); 
     ResultsListView = (ListView) findViewById(R.id.ResultsListView); 
     readFromFile(); 
    } 

    private String readFromFile() { 

     String ret = ""; 

     ArrayList<String> lines = new ArrayList<>(); // stores lines from text file. 

     try { 
      InputStream inputStream = openFileInput("History.txt"); 

      if (inputStream != null) { 
       InputStreamReader inputStreamReader = new InputStreamReader(inputStream); 
       BufferedReader bufferedReader = new BufferedReader(inputStreamReader); 
       String receiveString = ""; 
       StringBuilder stringBuilder = new StringBuilder(); 

       while ((receiveString = bufferedReader.readLine()) != null) { 
        stringBuilder.append(receiveString); 
        lines.add(stringBuilder.toString()); 
       } 

       inputStream.close(); 

       // put results in ListView 
       ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, lines); 
       ResultsListView.setAdapter(adapter); 

      } 
     } catch (FileNotFoundException e) { 
      Log.e("Exception", "File not found: " + e.toString()); 
     } catch (IOException e) { 
      Log.e("Exception", "Can not read file: " + e.toString()); 
     } 

     return ret; 
    } 

} 

我不知道爲什麼事情在ListView中出現兩次。看了一會兒,卻沒有看到任何東西。我很抱歉,如果這是一個簡單的錯誤。我仍然熟悉Android Studio。任何一點幫助將不勝感激。非常感謝你。

+0

你檢查了rawResult.getText()結果嗎?函數readFromFile()沒問題。我認爲你的輸入錯誤。 –

回答

0

我在看這段代碼:

  while ((receiveString = bufferedReader.readLine()) != null) { 
       stringBuilder.append(receiveString); 
       lines.add(stringBuilder.toString()); 
      } 

要附加一行stringBuilder,那麼整個字符串,因此一些線路會得到多次添加增加了適配器。我認爲你的意思是這樣做:

  while ((receiveString = bufferedReader.readLine()) != null) { 
       stringBuilder.append(receiveString); 
       lines.add(receiveString); 
      } 

也許你並不真的需要stringBuilder