로컬 데이터베이스 (sqlite)와 원격 검색 API의 두 가지 다른 장소에서 수집 한 데이터로 자동 완성하려는 검색 필드가 있습니다. 로컬 옵션을 즉시 보여주고 싶습니다. 잠시 후 (모든 키 누르기마다 API 요청을하지 않도록) API 요청을 시작하십시오.표시되는 AutoCompleteTextArea 드롭 다운에 결과 추가
API 요청이 반환 될 때 문제가 발생합니다. 해당 항목을 AutoCompleteTextArea
의 (이미 표시된) 드롭 다운에 어떻게 추가합니까?
private class MyAutoCompleteAdapter extends BaseAdapter implements Filterable {
private List<String> resultList;
private MySearchFilter filter;
public BeerAutoCompleteAdapter() {
super();
results = new ArrayList<String>();
filter = new MySearchFilter();
}
// getView, getCount, getItem overridden
private void add(String newResult) {
results.add(newResult);
notifyDataSetChanged();
}
private class MySearchFilter extends Filter {
// performFiltering and publishResults overridden
}
}
모두 90 %를 작동합니다는 지금, 나는 BaseAdapter
를 확장하는 클래스가 있습니다. add(newResult)
으로 전화하면 새 결과가 드롭 다운의 하단에 추가됩니다. 죄송 합니다만 높이의은 변경되지 않습니다. API 요청 전에 두 가지 결과가 있고 API에서 돌아 오면 결과는 드롭 다운에서 스크롤바가 표시된다는 것입니다. 내가 스크롤하자마자, UI는 "오, 그래, 그걸위한 공간이있다"라고 결정하고 그것을 보여준다.
notifyDataSetInvalidated()
은 물론 내 자동 완성 텍스트 영역에 forceLayout()
과 requestLayout()
을 시도했습니다. 주사위가 없다.
오늘 아침에 문제가 발생했다는 생각이 들었습니다. 필터를 사용하여 로컬 데이터를 가져 왔지만 API 호출과 add() 호출이 상위 클래스에서 발생했습니다. 모든 것을 수행하는 방식으로 필터를 재정의 할 수 있습니까? – Plutor