#java #android
#java #Android
Вопрос:
Мне нужно, чтобы это выполнялось в обратном порядке, чтобы строки отображались в порядке, обратном этому. Есть ли быстрый способ перевернуть TextView или что-то в этом роде? Спасибо за любую помощь.
try {
// Create a URL for the desired page
URL url = new URL("text.txt");
// Read all the text returned by the server
BufferedReader MyBr = new BufferedReader(new InputStreamReader(url.openStream()));
String line;
line = MyBr.readLine();
TextView textview1 = (TextView) findViewById(R.id.textView1);
StringBuilder total = new StringBuilder();
while ((line = MyBr.readLine()) != null) {
total.append(line "rn");}
textview1.setText(total);
Typeface tf = Typeface.createFromAsset(getAssets(),"fonts/wonderfull.ttf");
TextView tv = (TextView) findViewById(R.id.textView1);
tv.setTypeface(tf);
MyBr.close();
} catch (MalformedURLException e) {
} catch (IOException e) {
}
Ответ №1:
Поскольку вы меняете пользовательский интерфейс в своем коде, это должно выполняться в потоке пользовательского интерфейса. Конечно, вы знаете, что выполнение подобных операций ввода-вывода в потоке пользовательского интерфейса является недопустимым и может легко создавать ошибки. Итак, мы просто предположим, что это псевдокод. Лучше всего делать обратное при чтении потока. Например, вы можете вставить в начало StringBuilder.
Комментарии:
1. Я полный нуб. Понятия не имею, что такое поток пользовательского интерфейса, и я пока не боюсь ошибок, НО ваш совет помог мне решить мою проблему. Спасибо!
2. Код в вашем Activity (и любой код, который он вызывает) выполняется в основном потоке / UI вашего приложения. Если вы делаете что-то, что занимает много времени (> 100 мс), то ваше приложение будет казаться приостановленным и зависшим для пользователя. Если они попытаются прокрутить или нажать кнопки, приложение не будет отвечать. Пользователям это не нравится. Если вы свяжете поток пользовательского интерфейса более чем на 5 секунд, ОС Android представит пользователю диалоговое окно с надписью «Foo Application не отвечает». Это ANR. Это даст пользователю возможность завершить работу вашего приложения.
3. Вы не хотите, чтобы это произошло. Поэтому создайте новый поток для выполнения длительных задач, таких как чтение файла из сети. Вы можете использовать старый добрый java.lang. Поток или вы можете использовать Android goodness, например android.os. AsyncTask. Ознакомьтесь с этими классами из документации SDK. Также, если мой ответ помог, пожалуйста, примите его.
Ответ №2:
Вы также можете напрямую вставить в редактируемый:
Editable e = textview1.getEditableText();
while ((line = MyBr.readLine()) != null) {
e.insert(0, line "rn");
}
Ответ №3:
Вы можете использовать этот класс: java.io.RandomAccessFile, http://download.oracle.com/javase/7/docs/api/java/io/RandomAccessFile.html
Ответ №4:
Я бы прочитал файл в массив или список массивов, а затем использовал цикл for, чтобы распечатать его от последнего индекса до первого.