0

SQLiteテーブルをビューに表示しようとしています。最初の列の幅を20文字にします。substringメソッドを使用してこの効果を達成しようとしましたが、20文字未満の文字列でstringindexoutofboundsexceptionsが発生します。どんな助けでも大歓迎です。これが私のコードです:

テーブルを表示する方法:

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";
    }
4

2 に答える 2

1

現在使用している部分文字列の代わりにc.getString(iName).substring(0, Math.min(20, c.getString(iName).length())(おそらくforの一時的なものを使用して)使用してください。c.getString(iName)

于 2012-08-28T00:57:16.110 に答える
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文字を取得します。

于 2012-08-28T02:55:24.843 に答える