2012-04-16 3 views
0

저는 SimpleAdapter를 서브 클래스 화하고 위치 기반의 색상 변경 (다른 옵션을 사용하면 요소를 좀 더 예쁘게 구별 할 수 있습니다)을 원하지만 문제가 있습니다. getView 메소드를 겹쳐 쓰십시오. 난 그냥 createViewFromResource 인 SimpleAdapter 클래스의 원래의 getView 메서드에서 호출되는 메소드의 코드를 복사하여 내 코드는 이제 다음과 같습니다SimpleAdapter를 서브 클래 싱하고 getView를 덮어 쓰면 bindView() 문제가 발생합니다.

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 

    View v; 

    if (convertView == null) { 
     LayoutInflater inflater = (LayoutInflater)thecontext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     v = inflater.inflate(layoutResource, parent, false); 

    } else { 

     v = convertView; 

    } 

    bindView(position, v); 

    return v; 
} 

나는 그것이 95의 말했듯이, 여기 gamebreaking 아무것도 없다 원본 복사 소스에서 붙여 넣기를 복사 할 때, 하위 클래스에서 액세스 할 수 없으므로 수퍼 클래스에 선언 된 개인 변수 대신 생성자에서 일부 변수를 가져 왔습니다. 내 문제는보기가 반환되기 전에 호출되는 bindView 메서드입니다. 이클립스는 내가하는 일에 대한 어떤 힌트도주지 않고 서브 클래스에서 호출 할 수도 없다.

방법의 Bindview (INT보기)

는 타입 ChangingColorAdapter 나는 위의 코드를 사용하는 경우에 나는 원본에서 복사 비록 내가지고있어 무엇

에 대한 정의되지 않는다. 나 좀 이상하게 보입니다. API 레벨 8 (2.2)에서 프로그래밍 중이며 소스가 첨부되어 있습니다. SimpleAdapter 원래 소스를 살펴보면, 편집기는 bindView 호출이 어디로 가는지 알려주지 못하지만 오류를주지는 않습니다.

여기에 문제가 발생했거나이 문제의 원인은 무엇입니까? 나는 커서 어댑터에서 대부분의 문서 또는 설명을 bindView 메서드, 그냥 예제 구현을 찾을 수 없습니다. 어떤 힌트라도 좋을 것입니다.

건배

답변

0

나는 완전히이 일을 엉망. 몇 시간 동안 잠자기 후 SimpleAdapter 클래스에서 bindView() 메서드를 찾았습니다. 그것은 어떤 자바 - 의사도없고 어제 기능을 Ctrl- 클릭 할 수 없다고 맹세 할 수 있지만 오늘은 그냥 잘 작동합니다. 메소드가 프라이빗 일 때 당신은 내가했던 일을 다시 구현해야하고 이제는 완벽하게 부드럽게 실행됩니다.

관련 문제