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++;
        }
    }
}

s里面是process(String text)空的!

4

1 回答 1

1

正如我已经说过的,使用调试器并设置断点process(text.toString());并查看值text是什么。toString() 方法返回的字符串表示形式,CharSequence因此如果它返回空字符串,则意味着您正在将一个空字符串传递给您的setText()方法。

由于 String 对象是不可变的,因此您将视图设置为与text传递给setText(). 再一次 - 是时候使用调试器了

于 2013-01-13T21:57:51.823 回答