2013-06-12 21 views
9

için araçlar tarafından kullanılan yapıcısı eksik aşağıdaki uyarı var: (Bağlam) veya (Bağlam:Özel görünüm adaptörü

Özel görünüm com/example/görünüm/adaptör/SomeAdapter araçları tarafından kullanılan yapıcısı eksik , öznitelik) ya da (Bağlam, öznitelik, int) benim sınıf SomeAdapter içinde

public class SomeAdapter extends BaseAdapter{} 
public abstract class BaseAdapter extends ArrayAdapter<SomeModel>{} 
ArrayAdapter uzanan bazı BaseAdapter uzandığı

Uyarı, somut adaptörde mevcut, ancak soyut BaseAdapter'de mevcut değil. Bu uyarıyı bu bağlamda duymuş olan var mı? Bildiğim kadarıyla benim sınıf adları yukarıdaki kalıbı eşleşmeyen gördüğünüz gibi

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 Android onlar ViewConstructorDetector aracılığıyla süper sınıfların adını işaretleyerek görüşlerini uzatıyoruz için sınıfları denetler. Bu uyarının nasıl giderileceği veya bastırılacağı konusunda herhangi bir fikri var mı? BaseAdapter içinde

GetView(): bir kurucu bulması gerektiğini (örneğin Eclipse için Android düzeni editörü olarak)

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

Bağdaştırıcınızı neler kullanıyor? Özel bir görüşünüz var mı? – Neil

+0

Hayır, hiçbir şey uygulamıyorum. Sadece ArrayAdapter'i genişletmek. Hangi amaçla – salcosand

+0

? Bir adaptör kendi başına çalışamaz. Ne için kullanmak istersin? – Neil

cevap

8

Kurucular eklemek aşağıdaki imzalardan biri: * View(Context context) * View(Context context, AttributeSet attrs) * View(Context context, AttributeSet attrs, int defStyle)

> Tercihler - -> Android -> Lint Hata Kontrolü

Window: Bu tür şeyleri kullanarak ve sadece tüm projeler için bu uyarı kurtulmak istiyorsanız değilseniz

sadece gidin.

listeden ViewConstructor bulup 'görmezden' için şiddetini ayarlayın.

+0

Hiçbir CusonView'ım yok. Benim Adaptörlerim var. Ve ArrayAdapter, bu tür kurucular sağlamaz. – salcosand

+0

getView() yönteminizi bağdaştırıcılarınızdan gönderebilir misiniz? Teşekkürler – Jarvis

+0

Bunun için iyi bir şey olduğundan emin değilim, ama işte gidiyorsun. GetView(), BaseAdapter içinde uygulanır, ancak uyarının olduğu SomeAdapter'da değil. – salcosand

3

Bazı düzen araçları: En CustomView sınıfta

@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

Bu, düzen düzenleyicisini etkiler mi? Anlamadığım şey Lint'in neden adaptörümün bir görünüm olduğunu düşünüyor. – salcosand

İlgili konular