2014-07-09 2 views
0

드롭 다운 항목에서 일부 텍스트를 굵게 표시 할 수 있도록 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

여기 정확히 작동하지 않는 것은 무엇입니까? 오류가 있습니까? – JBires

+0

예, 거기에, 어떻게 든 관련 질문으로 질문을 혼합. 나는 그것을 곧 업데이트 할 것이다 –

답변

1

안드로이드 API 내에서이 메서드는 지원되지 않으며 호출 될 때 예외를 throw합니다.

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

나는의 ListView 작업에 익숙하지 않은, 그래서 내가 여기에 뭔가 문제가있을 수 있습니다. ViewGroup의 addView 메소드가 작동하는 것을 볼 수 있습니다.하지만 ListView가 자식 뷰의 하위에 있기 때문에 addView가 예외를 던지기 때문에, 내가 생각한 것은 부모 메서드를 직접 오버 라이딩하는 것입니다.이 경우 AbsListView, 그 메소드가 지원되지 않아서 예외를 던지는 것을 보았습니다.

왜 이런 일이 발생하는지에 대한 설명 : Why is super.super.method(); not allowed in Java?

+0

나는 예외도 던졌다는 것을 알아 차렸다. 내가 추가하기 전에 아이들에게 접근 할 다른 방법을 찾아야 할 것 같네요. –

0

당신이 당신의 사용자 지정 목록보기위한 클래스가있는 경우에, 단순히 당신이 경우 사용자 지정 목록보기, 또는이 클래스에서 제공하는 방법의 내용을 추가 처리는 클래스에서 제공하는 메소드를 추가 이미 'addView'메소드를 오버라이드하고있다.

+0

와우, 무슨 일이 일어 났는지 모르겠다. 두 가지 다른 질문이 섞여있다 ... 나는 실제 문제를 반영하여 편집 할 것이다. –

관련 문제