Почему \ n не работает из базы данных? - PullRequest
0 голосов
/ 21 ноября 2011

Я заполняю ListView из База данных .Одно из полей в БД содержит текст с \ n .Но когда я помещаю этот текст в элемент, я не получаю Новая строка вместо \ n .Как мне правильно взять этот текст из БД и поместить его в элемент?

Мой код:

txtComment = (TextView) convertView.findViewById(R.id.txt_comment);
this.cur.moveToPosition(position);
txtComment.setText(this.cur.getString(this.cur.getColumnIndex("comment")));

В элементе БД:

Зонд был построен для того, чтобы приземлиться на более крупную ... скалу для возвращения на Землю. \ NТакое предприятие должно ...

привести к появлению андроида:

Зонд был построен для того, чтобы приземлиться на более крупную ... скалу для возвращения на Землю. \ NТакое предприятие должно ...

Я ожидал:

Зонд был построен для того, чтобы приземлиться на более крупную ... скалу для возвращения на Землю.

Такое предприятие должно ...

TextView из item.xml :

<TextView
    android:id="@+id/txt_comment"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:gravity="center_vertical"
    android:paddingLeft="5dip"
    android:padding="5dip"
    android:textColor="#fff"
    android:textSize="12sp" />

Содержимое для DB Я получаю путем анализа JSON.Я могу попросить разработчика вставить что-то еще вместо \ n .Но что?

1 Ответ

2 голосов
/ 21 ноября 2011

Строка, содержащая обратную косую черту, за которой следует n, очень отличается от строки, содержащей символ новой строки.Только когда строка анализируется как строковый литерал , Java обрабатывает их по-разному.Если вы хотите сохранить новую строку в базе данных, вам следует просто сохранить ее в значении, с которого нужно начать.Если вы хотите применить экранирование строкового литерала Java, вам нужно найти соответствующий код для этого - который не такой же простой, как, например, text.replace("\\n", "\n"), как вы также необходимо учитывать такие ситуации, как "escaped\\n".

Я подозреваю, что где-то будут библиотеки библиотек строк, которые могут это сделать - класс StringEscapeUtils из Apache Commons 3.1выглядит хорошей отправной точкой, если он работает в Android, например.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...