我正在扩展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] 删除。
我来说两句