2012-03-14 2 views
0

나는 제품 목록이 있습니다.edittext가있는 Android 필터 목록보기

@Override 
    public String toString() { 
     return this.getNaam(); 
    } 

내가 내 EditTextaddTextChangedListener를 추가 : 나는 제품의 toString 메소드를 오버라이드 (override).

tvZoek.addTextChangedListener(new TextWatcher() {    
     public void onTextChanged(CharSequence s, int start, int before, int count) { 
      adapter.getFilter().filter(s.toString().toLowerCase());    
     } 
     public void beforeTextChanged(CharSequence s, int start, int count, 
        int after) { 
     } 
     public void afterTextChanged(Editable s) { 
     } 
}); 

검색 할 때 목록이 필터링됩니다. 예를 들어 "Bio"를 검색하고 이름에 "Bio"가 표시된 제품이 5 개 이상있는 경우 목록에 처음 5 개 제품을 표시하는 것이 아니라 이름에 "Bio"가 표시된 5 개 제품을 표시하는 것입니다.

어댑터의 getFilter() 메서드를 덮어 쓰지 않았습니다.

올바른 제품을 어떻게 표시합니까? (ArrayAdapter와 협력 중)

답변

1

다음을 시도해보십시오.

public void onTextChanged(CharSequence s, int start, int before, int count) { 
        updateList(s.toString);    
       } 


public void updateList(String filter) { 

List<> tempList = new ArrayLsit<>(); 

int yourListSize = myList.count(); 
for (int i = 0; i < myListSize; i++) { 
if (filter != null) { 
    if (myList.get(i).contains(filter)) { 
    tempList.add(myList.get(i)); 
    } 
} 
} 

// create adapter using tempList 
// setAdapter 

}

+0

이 작동하지만 난 그게 좋은 정상적으로 실행할 때, 그것은 느린 디버그 모드에서의 verry 느린 –

+0

입니다. 고마워. 아무도 다른 솔루션을 제공하지 않으면 며칠 내에 답변을 표시합니다 :) 감사합니다. –