Нужна помощь

Интерфейс, диалоги, темы, стили, меню
Ответить
ibnabbas
Сообщения: 1
Зарегистрирован: 02 авг 2012, 15:30

Нужна помощь

Сообщение ibnabbas » 09 авг 2012, 09:48

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

k.chaiko
Сообщения: 21
Зарегистрирован: 02 авг 2012, 17:23

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

Сообщение k.chaiko » 09 авг 2012, 11:44

а как тебе нужно ? в строчку через запятую ? вставляй в TextView, если перечисление, то лучше ListView юзать..опишите по конкретней как вы хотите видеть этот массив..

Аватара пользователя
damager82
Администратор
Сообщения: 1383
Зарегистрирован: 07 янв 2012, 11:32
Контактная информация:

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

Сообщение damager82 » 10 авг 2012, 10:40

ibnabbas, в след. раз создавайте более информативный заголовок темы, плз ))
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение

Аватара пользователя
Mikhail_dev
Сообщения: 2386
Зарегистрирован: 09 янв 2012, 14:45
Откуда: Самара

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

Сообщение Mikhail_dev » 10 авг 2012, 11:09

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

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

    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 гораздо эффективней.

Ответить