2013-10-26 2 views
1

ListView의 하위 클래스에서 setAdapter 메서드를 재정의하려고합니다. setAdapter는 AdapterView 클래스에서ListView의 하위 클래스에서 setAdapter를 재정의했습니다.

void setAdapter(T adapter); 

으로 정의됩니다. AdapterView 클래스는 제네릭 클래스입니다. AdapterView

유형 변수를 사용할 수 없기 때문에 위의 선언은 ListView 하위 클래스에서 작동하지 않지만 유형 변수를 하위 클래스로 소개하는 방법을 이해하지 못합니다. 모든 구체적인 유형이 작동하지 않습니다.

답변

1

AdapterView은 제네릭 형식 인수를 사용하지만 ListViewGridViewListAdapter이어야 함을 지정합니다. 그래서 당신은이 작업을 수행 할 수 있습니다

@Override 
public void setAdapter(ListAdapter adapter) { 
    // ... 
} 

이것은 ListView의 부모 클래스, AbsListViewAdapterView<ListAdapter>를 확장하기 때문에 : T을 의미

public abstract class AbsListView extends AdapterView<ListAdapter> { ... } 

사방이 ListView에 사용되는 ListAdapter이다.

+0

네, AbsListView 소스 코드를 살펴 보았습니다. 안드로이드 문서가 혼란 스럽다. AbsListView는 AdapterView를 확장한다.

관련 문제