Подтвердить что ты не робот

Как получить чтение файла по строкам

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

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

4b9b3361

Ответ 1

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

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 nothing more to be done here.
    }
}

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

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

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

Ответ 2

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

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

Ответ 3

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

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

С уважением,  Stéphane