Страница 1 из 1

Нужна помощь

Добавлено: 09 авг 2012, 09:48
ibnabbas
Привет ГлубокоУважаемые Андроид разработчики!!!
Возник вопрос
Есть большой текст
Как лучше вставить на TextView ?
Например Масссиве есть <item>array1</item>
<item>array2</item>
<item>array3</item>
Типа такого

Re: Нужна помощь

Добавлено: 09 авг 2012, 11:44
k.chaiko
а как тебе нужно ? в строчку через запятую ? вставляй в TextView, если перечисление, то лучше ListView юзать..опишите по конкретней как вы хотите видеть этот массив..

Re: Нужна помощь

Добавлено: 10 авг 2012, 10:40
damager82
ibnabbas, в след. раз создавайте более информативный заголовок темы, плз ))

Re: Нужна помощь

Добавлено: 10 авг 2012, 11:09
Mikhail_dev
Я так понимаю что текст будет вводиться с массива путём слияния его частей. Значит наиболее удачный способ это сделать, вот так

Код: Выделить всё

    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();
        }
    }
это для файла непосредственно. Для массива еще проще получится. Суть в том, что через StringBuffer производим конкатенацию (слияние строк массива или чего-либо) строк, если строк больше двух. Никогда не производите конкатенацию строк (типа String) в цикле. Только StringBuilder или StringBuffer. Разница между последними лишь в синхронизации.

Только один момент. ООООЧень большие тексты не стоит наверное писать. Либо сделать переменный буфер в переменной, которая сбрасывает информацию в TextView.
Можно еще записывать информацию сразу в TextView путём вызова его метода .append(string);
но я сейчас глянул сорцы его, что-то так до конца и не понял, как он склеивает строки внутри себя. боюсь что там получается много мусора, при частом его вызове. В любом случае кусками бросать в TextView гораздо эффективней.