为什么不能在数据库中工作?

时间:2011-11-21 19:33:31

标签: android database sqlite

我从数据库填写 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 。但是什么?

1 个答案:

答案 0 :(得分:2)

包含反斜杠后跟n的字符串与包含换行符的字符串非常不同。只有当字符串被解析为字符串文字时,Java才会以不同方式对待它们。如果要在数据库中存储换行符,只需将其存储在值中即可。如果你想应用Java字符串文字转义,你需要找到一些适当的代码 - 例如,不是就像text.replace("\\n", "\n")一样简单,因为你 还需要考虑"escaped\\n"等情况。

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