Привет ГлубокоУважаемые Андроид разработчики!!!
Возник вопрос
Есть большой текст
Как лучше вставить на TextView ?
Например Масссиве есть <item>array1</item>
<item>array2</item>
<item>array3</item>
Типа такого
Нужна помощь
Re: Нужна помощь
а как тебе нужно ? в строчку через запятую ? вставляй в TextView, если перечисление, то лучше ListView юзать..опишите по конкретней как вы хотите видеть этот массив..
Re: Нужна помощь
ibnabbas, в след. раз создавайте более информативный заголовок темы, плз ))
- Mikhail_dev
- Сообщения: 2386
- Зарегистрирован: 09 янв 2012, 14:45
- Откуда: Самара
Re: Нужна помощь
Я так понимаю что текст будет вводиться с массива путём слияния его частей. Значит наиболее удачный способ это сделать, вот так
это для файла непосредственно. Для массива еще проще получится. Суть в том, что через StringBuffer производим конкатенацию (слияние строк массива или чего-либо) строк, если строк больше двух. Никогда не производите конкатенацию строк (типа String) в цикле. Только StringBuilder или StringBuffer. Разница между последними лишь в синхронизации.
Только один момент. ООООЧень большие тексты не стоит наверное писать. Либо сделать переменный буфер в переменной, которая сбрасывает информацию в TextView.
Можно еще записывать информацию сразу в TextView путём вызова его метода .append(string);
но я сейчас глянул сорцы его, что-то так до конца и не понял, как он склеивает строки внутри себя. боюсь что там получается много мусора, при частом его вызове. В любом случае кусками бросать в TextView гораздо эффективней.
Код: Выделить всё
void readLog(String fName) throws IOException {
File fileName = null;
BufferedReader in = null;
fileName = new File(Settings.getAppDir(), fName);
try {
in = new BufferedReader(new FileReader(fileName));
String str = "";
StringBuffer output = new StringBuffer();
while ((str = in.readLine()) != null) {
output.append(str + "\n");
}
if (output.length() == 0) {
Toast.makeText(getApplicationContext(), "файл пустой", Toast.LENGTH_SHORT).show();
tvLog.setText("");
return;
}
tvLog.setText("");
tvLog.setText(output.toString());
in.close();
} catch (IOException e) {
Log.d("myLogs", fileName.toString() + " ошибка чтения файла = "+ e.getMessage());
in.close();
}
}
Только один момент. ООООЧень большие тексты не стоит наверное писать. Либо сделать переменный буфер в переменной, которая сбрасывает информацию в TextView.
Можно еще записывать информацию сразу в TextView путём вызова его метода .append(string);
но я сейчас глянул сорцы его, что-то так до конца и не понял, как он склеивает строки внутри себя. боюсь что там получается много мусора, при частом его вызове. В любом случае кусками бросать в TextView гораздо эффективней.