重写超类继承的方法

安东尼·波特

我正在扩展ListView类,以便可以在下拉菜单项中使某些文本变为粗体。我试图覆盖addView方法,以便我可以在添加视图之前更改文本。我收到一个错误消息,说“方法不会从其超类中重写方法”。addView继承自ViewGroup类。

public class EditableListView extends ListView {

    public EditableListView(Context context){
        super(context);
    }
    public EditableListView(Context context, AttributeSet attrs){
        super(context, attrs);
    }
    public EditableListView(Context context, AttributeSet attrs, int defStyle){
        super(context, attrs, defStyle);
    }


    @Override
    public void addView(View child, int index, LayoutParams params) {
        final SpannableStringBuilder builder = new SpannableStringBuilder(((CheckedTextView)child).getText().toString());
        final StyleSpan bold = new StyleSpan(android.graphics.Typeface.BOLD);
        builder.setSpan(bold, 10, 21, Spannable.SPAN_INCLUSIVE_INCLUSIVE);
        builder.setSpan(bold, 36, 37, Spannable.SPAN_INCLUSIVE_INCLUSIVE);
        ((CheckedTextView)child).setText(builder);
        super.addView(child, index, params);

    }
}
杰比斯

在android api中,它表示该方法不受支持,并在调用时引发异常。

http://developer.android.com/reference/android/widget/ListView.html

我不熟悉使用列表视图,因此这里可能出了点问题。我看到了ViewGroup的addView方法是可以使用的,但是由于ListView是一个孩子,而addView抛出异常的孩子很远,所以我认为正在覆盖它的父方法,在本例中为AbsListView,并看到该方法不受支持,从而引发异常。

对于为什么发生这种情况的解释:为什么是super.super.method();?Java中不允许使用?

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章