我正在尝试在视图中显示SQLite表。我希望我的第一列宽度为20个字符。我试图通过使用substring方法来实现这种效果,但我得到stringindexoutofboundsexceptions,字符串少于20个字符。任何帮助是极大的赞赏。这是我的代码:
在视图中显示表格的方法:
public String getData() {
// TODO Auto-generated method stub
String[] columns = new String[]{ KEY_ROWID, KEY_NAME, KEY_QUANTITY, KEY_VALUE };
Cursor c = ourDatabase.query(DATABASE_TABLE, columns, null, null, null, null, null);
String result = "";
int iRow = c.getColumnIndex(KEY_ROWID);
int iName = c.getColumnIndex(KEY_NAME);
int iQuantity = c.getColumnIndex(KEY_QUANTITY);
int iValue = c.getColumnIndex(KEY_VALUE);
for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()){
result = result + /*c.getString(iRow) + " " +*/ c.getString(iName).substring(0, 20) + " " + c.getString(iQuantity) + " " + c.getString(iValue) + "\n";
}
答案 0 :(得分:1)
只需使用c.getString(iName).substring(0, Math.min(20, c.getString(iName).length())
(可能使用临时用于c.getString(iName)
)而不是现在的子字符串。
答案 1 :(得分:0)
如果您不想要它们,那么为什么选择。你可以做到
String[] columns = new String[]{ KEY_ROWID, "substr(" + KEY_NAME + ",1,20)", KEY_QUANTITY, KEY_VALUE };
Cursor c = ourDatabase.query(DATABASE_TABLE, columns, null, null, null, null, null);
从列中获取最多20个字符。