Как получить файл для чтения построчно - PullRequest
18 голосов
/ 24 августа 2011

У меня есть файл, содержащий текст в отдельной строке.
Я хочу сначала отобразить строку, а затем, если я нажимаю кнопку, вторая строка должна отображаться в TextView, а первая строка должна исчезнуть.Затем, если я нажму ее еще раз, должна появиться третья строка и т. Д.

Должен ли я использовать TextSwitcher или что-то еще?Как я могу это сделать?

Ответы [ 3 ]

31 голосов
/ 24 августа 2011

Вы пометили его как "android-assets", поэтому я предполагаю, что ваш файл находится в папке assets.Здесь:

InputStream in;
BufferedReader reader;
String line;
TextView text;

public void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    text = (TextView) findViewById(R.id.textView1);
    in = this.getAssets().open(<your file>);
    reader = new BufferedReader(new InputStreamReader(in));
    line = reader.readLine();

    text.setText(line);
    Button next = (Button) findViewById(R.id.button1);
    next.setOnClickListener(this);
}

public void onClick(View v){
    line = reader.readLine();
    if (line != null){
        text.setText(line);
    } else {
        //you may want to close the file now since there's nothing more to be done here.
    }
}

Попробуйте.Я не смог убедиться, что это работает полностью, но я считаю, что это общая идея, которой вы хотите следовать.Естественно, вы захотите заменить любой R.id.textView1/button1 именами, которые вы указали в файле макета.

Также: здесь очень мало проверок на ошибки для экономии места.Вы захотите проверить, что ваш ресурс существует, и я уверен, что при открытии файла для чтения должен быть блок try/catch.

Редактировать: Большая ошибка, это не R.layout, это R.id Я отредактировал свой ответ, чтобы решить проблему.

15 голосов
/ 24 августа 2011

Следующий код должен удовлетворить ваши потребности

try {
// open the file for reading
InputStream instream = new FileInputStream("myfilename.txt");

// if file the available for reading
if (instream != null) {
  // prepare the file for reading
  InputStreamReader inputreader = new InputStreamReader(instream);
  BufferedReader buffreader = new BufferedReader(inputreader);

  String line;

  // read every line of the file into the line-variable, on line at the time
  do {
     line = buffreader.readLine();
    // do something with the line 
  } while (line != null);

}
} catch (Exception ex) {
    // print stack trace.
} finally {
// close the file.
instream.close();
}
0 голосов
/ 24 августа 2011

Вы можете просто использовать TextView и ButtonView.Прочитайте файл с помощью BufferedReader, он предоставит вам хороший API для чтения строк по одной.При нажатии на кнопку просто измените текст текстового представления с помощью settext.

Вы также можете рассмотреть возможность считывания всего содержимого файла и помещения его в список строк, это может быть чище, если ваш файл не слишкомбольшой.

С уважением, Стефан

...