我从数据库填写 ListView 。数据库中的一个字段包含带 \ n 的文本。但是,当我将此文本放入项目时,我没有得到换行符而不是 \ n 。我如何正确地从DB中获取此文本并将其放入项目?
我的代码:
txtComment = (TextView) convertView.findViewById(R.id.txt_comment);
this.cur.moveToPosition(position);
txtComment.setText(this.cur.getString(this.cur.getColumnIndex("comment")));
在数据库项目中:
探测器的建造是为了降落在更大的岩石上,然后再回到地球上。\ n这样的冒险应该......
导致android:
探测器的建造是为了降落在更大的岩石上,然后再回到地球上。\ n这样的冒险应该......
我预计:
来自 item.xml 的探测器的建造是为了降落在更大的岩石上,然后再回到地球上。
这样的冒险应该......
TextView :
<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" />
数据库的内容我正在解析JSON。我可以要求开发人员插入smth而不是 \ n 。但是什么?
答案 0 :(得分:2)
包含反斜杠后跟n的字符串与包含换行符的字符串非常不同。只有当字符串被解析为字符串文字时,Java才会以不同方式对待它们。如果要在数据库中存储换行符,只需将其存储在值中即可。如果你想应用Java字符串文字转义,你需要找到一些适当的代码 - 例如,不是就像text.replace("\\n", "\n")
一样简单,因为你 还需要考虑"escaped\\n"
等情况。
我怀疑某处会有一些字符串实用程序库可以做到这一点 - 例如,Apache Commons 3.1中的StringEscapeUtils
类看起来是一个很好的起点,如果它适用于Android。