9

도구에 의해 사용되는 생성자가 누락 나는 다음과 같은 경고를 가지고 : (컨텍스트) 또는 (문맥 :사용자 정의보기 어댑터

사용자 정의보기 COM/예 /보기/어댑터/SomeAdapter은 도구에 의해 사용되는 생성자가 누락 , 속성 세트) 또는 (문맥, 속성 세트, INT)는 내 클래스 SomeAdapter에서

public class SomeAdapter extends BaseAdapter{} 
public abstract class BaseAdapter extends ArrayAdapter<SomeModel>{} 
ArrayAdapter와 확장 일부 BaseAdapter를 확장하는

경고가 추상 어댑터에는 있지만 추상적 인 BaseAdapter에는 없습니다. 그 맥락에서이 경고를 들어 본 사람이 있습니까? 지금까지 내가 내 클래스 이름은 위의 패턴과 일치하지 않는 볼 수

private static boolean isViewClass(ClassContext context, ClassNode node) { 
    String superName = node.superName; 
    while (superName != null) { 
     if (superName.equals("android/view/View")    //$NON-NLS-1$ 
       || superName.equals("android/view/ViewGroup") //$NON-NLS-1$ 
       || superName.startsWith("android/widget/")  //$NON-NLS-1$ 
       && !((superName.endsWith("Adapter")    //$NON-NLS-1$ 
         || superName.endsWith("Controller")  //$NON-NLS-1$ 
         || superName.endsWith("Service")   //$NON-NLS-1$ 
         || superName.endsWith("Provider")  //$NON-NLS-1$ 
         || superName.endsWith("Filter")))) {  //$NON-NLS-1$ 
      return true; 
     } 

     superName = context.getDriver().getSuperClass(superName); 
    } 

    return false; 
} 

:

AFAIK 안드로이드은 ViewConstructorDetector를 통해 슈퍼 클래스의 이름을 확인하여 뷰를 확장하는 클래스를 확인합니다. 누구든지이 경고를 수정하거나 억제하는 방법에 대해 알고 있습니까? BaseAdapter에서

의 getView()와 생성자를 찾을 필요 (예 : 이클립스의 안드로이드 레이아웃 에디터 등)

public CustomView(Context context) { 
    super(context); 
} 
public CustomView(Context context, AttributeSet attrs) { 
    super(context, attrs); 
} 
+0

어댑터를 어떻게 구현합니까? 사용자 정의보기가 있습니까? – Neil

+0

아니요, 구현하지 않았습니다. ArrayAdapter를 확장하면됩니다. 어떤 목적으로 – salcosand

+0

? 어댑터는 독자적으로 작동 할 수 없습니다. 무엇을 위해 그것을 사용하고 싶습니까? – Neil

답변

8

생성자를 추가 다음과 같은 서명 중 하나 : * View(Context context) * View(Context context, AttributeSet attrs) * View(Context context, AttributeSet attrs, int defStyle)

-> 환경 설정 -> 안드로이드 -> 린트 오류가 확인

창 : 당신은 그런 일을 사용하여, 그냥 모든 프로젝트에이 경고를 제거하지 않으면 6,

단지에 이동합니다.

목록에서 ViewConstructor을 찾아 '무시'에 심각도를 설정합니다.

+0

CusonView가 없습니다. 방금 내 어댑터가 있습니다. 그리고 ArrayAdapter는 그러한 생성자를 제공하지 않습니다. – salcosand

+0

어댑터에서 getView() 메소드를 게시 할 수 있습니까? 감사합니다 – Jarvis

+0

나는이게 무슨 좋은 일인지 잘 모르겠지만 여기에 간다. getView()는 BaseAdapter에는 구현되지만 SomeAdapter에는 구현되지 않습니다 (경고가있는 경우). – salcosand

3

일부 레이아웃 도구 : 당신의있는 CustomView 클래스에서

@Override 
public final View getView(final int position, final View convertView, final ViewGroup parent) { 
    View view = convertView; 
    if (null == view) { 
     view = createNewView(parent, position); 
    } else { 
     reuseOldView(view, position); 
    } 
    return view; 
} 
+0

이것이 레이아웃 편집기에 영향을 줍니까? 내가 이해할 수없는 것은 Lint가 왜 내 어댑터가 뷰라고 생각 하느냐입니다. – salcosand

관련 문제