我正在扩展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);
}
}
答案 0 :(得分:1)
在android api中,它表示该方法不受支持,并在调用时抛出异常。
http://developer.android.com/reference/android/widget/ListView.html
我不熟悉使用listviews,所以我可能在这里遇到了问题。我看到ViewGroup的addView方法是有用的,但是由于ListView是一个孩子,因为addView引发了异常,所以我认为正在发生的事情是它直接覆盖了父方法。在它上面,在这种情况下是AbsListView,并且看到该方法不受支持并因此抛出异常。
要解释为何发生这种情况:Why is super.super.method(); not allowed in Java?
答案 1 :(得分:0)
如果您有自定义列表视图的类,则只需添加您在处理自定义列表视图的类中提供的方法, OR 在类中添加所提供方法的内容你已经覆盖了'addView'方法。