繁体   English   中英

重写超类继承的方法

[英]Overriding a method inherited by super class

我正在扩展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中不允许使用?

如果您有一个用于自定义列表视图的类,则只需添加您在处理自定义列表视图的类中提供的方法, 或者如果已覆盖'addView'方法,则在您的类中添加提供的方法的内容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM