2

リスト項目があります。各アイテムは Textview を拡張してカスタマイズしたアイテムを作成します。このクラスでは、setText(CharSequence text, BufferType type)メソッドをオーバーライドして、 を呼び出す前にテキストを処理しますsuper.setText(Charsequence text, BufferType type)
しかし、text.toString()メソッドを呼び出すと、空の文字列が返されます。

同じ問題を抱えているか、何かヒントはありますか?もちろん、私は Unicode テキストを使用します。たとえば : \u0661\u6662\u663. リスト ビューでは、Unicode 日付の表示に問題はありません。

これは私のオーバーライドとプロセスの方法です:

@Override
public void setText(CharSequence text, BufferType type) {
    // TODO Auto-generated method stub
    process(text.toString());
    super.setText(text, type);
}



private void process(String guess) {
    StringBuffer correct = new StringBuffer(GameForm.getCorrectNumber());
    int s = guess.length(); 
    if (s!=correct.length())
        throw new InputMismatchException("Lenght of correct and guess number is different");
    acceptCount = 0;
    warningCount = 0;
    for (int i = 0; i < s; i++) {
        if (guess.charAt(i) == correct.charAt(i)) {
            acceptCount++;
        } else if (correct.indexOf(guess.charAt(i) + "") != -1) {
            warningCount++;
        }
    }
}

sprocess(String text)空です!

4

1 に答える 1

1

既に述べたように、デバッガを使用してブレークポイントを設定しprocess(text.toString());、 の値を確認してくださいtext。toString() メソッドは の文字列表現をCharSequence返すため、空の文字列を返す場合は、メソッドに空の文字列を渡していることを意味しますsetText()

String オブジェクトは不変であるtextため、に渡すのと同じビューを設定しますsetText()もう一度 - デバッガを使用する時が来ました。

于 2013-01-13T21:57:51.823 に答える