2011-11-21 72 views
0

我填入ListView数据库。 DB中的一个字段包含文本\ n。但是当我把这个文本放入该项目时,我不会得到Newline而不是\ n。我该如何正确地从数据库中获取这些文本并将其放入项目中?为什么 n不能从数据库中工作?

我的代码:

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

在DB项目:

探头始建于土地上的大...岩石带回地球\ nSuch创业应...

结果的android:

探头始建于土地上的大...岩石带回地球\ nSuch一个风险应...

我预计:

的探测器是为了降落在地球上而建造的。

这样的企业应该...

的TextViewitem.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

你得到什么呢? – kabuko

+0

我不认为这与DB有关。数据库只是存储它所提供的内容。所以可能有两个问题:(1)当你插入/更新数据时,你不会将换行符传递给数据库,或者(2)你的'TextView'被指示(可能是隐式地)显示唯一的文本行。可能会发布您的布局xml列表项。 –

+0

@kabuko我已经添加了我所取得的。 – Sviatoslav

回答

2

包含反斜杠后跟n的字符串与包含换行符的字符串非常不同。只有当字符串被解析为字符串文字时,Java才会以不同的方式处理它们。如果你想在数据库中存储一个换行符,你应该将它存储在开始的值中。如果要应用Java字符串文字转义,则需要找到一些适当的代码来执行此操作 - 其中不是,就像text.replace("\\n", "\n")一样简单,例如,需要考虑如"escaped\\n"

我怀疑会有一些字符串实用程序库可以做到这一点 - 例如,Apache Commons的StringEscapeUtils类看起来像是一个很好的起点,如果它在Android中有效。

相关问题