Как получить чтение файла по строкам
У меня есть файл, содержащий текст в отдельной строке.
Сначала я хочу отобразить строку, а затем, если я нажму кнопку, вторая строка должна отображаться в TextView
, и первая строка должна исчезнуть. Затем, если я снова нажму на него, отобразится третья строка и т.д.
Должен ли я использовать TextSwitcher
или что-нибудь еще?
Как я могу это сделать?
Ответы
Ответ 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