2011-03-15 5 views
0

배경 :
은 내가 의 GridViewBaseAdapter를 확장하는 매우 복잡한 어댑터 클래스를 기반으로합니다. getView에서 무엇을 표시해야하는지 계산할 때 너무 많은 작업을하고 있고, 계산할 때 표시 할 항목의 수가 종종 변경되는 것을 발견합니다. getView도 같은 위치에서 여러 번 호출됩니다. notifyDataSetChanged()이 너무 빨리 호출되는 것 같습니다.안드로이드 : 필터 기능을 갖춘 어댑터에 GridView를 기반으로 할 수 있습니까?

이것은 내 코딩에 많은 고통을 초래했습니다. 대부분의 코드를 다른 루틴으로 옮겼지만 최종 디스플레이 중에 선택 항목을 필터링해야합니다.

나는 item.enabled (false)을 설정하여이 문제를 해결했지만, 모두 함께 제거하고 싶습니다.

나는 의 GridView & 기본 어댑터의 라이프 사이클을 찾을 수없는,하지만 난 결정했다고 getCount() 나는 거기에 내 변화를 연결할 수 있습니다 동안이 항목이 표시되기 전에 여러 번 전화를 가져옵니다 , 그것은 내가 여기 너무 열심히 일해야하는 것처럼 느껴집니다.

질문 :
가 나는 의 GridView에 묶여 어댑터와 연결에 필터 클래스를 사용할 수 있습니까? 예를 들어

의 GridView 내 어댑터 (36 개) 표시 항목 및이 매 3 항목을 보여 의미 값 "3"에 텍스트 뷰 세트가 들어있는 활동이있다. adapter.notifyDataSetChanged()는 호출되는 그리고 내가 이해할 필요가 있기 때문에 즉시 .getCount(), 나는 구체적인 많이 여기이없는 것을 알고

의 getView 와 정말 엉망으로하는 (36)을 반환하고 싶어 개념은 단순히 특정 문제에 대한 해결책을 찾는 것이 아닙니다.

내가 간과하고있는 문제를 보는 방법이나 기능이 있어야합니다.

답변

2

getCount을 재정의 했습니까? 기본 데이터가 변경된 후 36을 반환하는 이유는 무엇입니까?

당신이 getCount가 기본 데이터에 의존 할 경우, 나는이 문제가있을 것이라고 생각하지 않습니다

@Override 
public int getCount() { 
    return myArray.length; // or whatever your underlying data source is 
} 

편집이 - 또한, 당신은 당신의 데이터에 대한 변경이 호출하기 전에 을 설정할 수 있도록 확인을 notifyDataSetChanged.

관련 문제