SimpleCursorAdapter를 사용하는 ListView에 대한 필터를 구현하는 방법에 대한 문제가 한 명 이상있었습니다. 나는이 문제가 있었고 나는이 웹에서 이것에 대해 많은 답을 발견했다. 마침내 작동하게 될 때까지 모든 부분에서 코드 조각을 가져 왔고 모양이 더 간단했습니다.편집 텍스트 및 SimpleCursor 어댑터를 사용하여 ListView를 필터링하는 방법?
나는 구글 I/O 2010 본 적이 - YouTube에서의 ListView 비디오의 세계를 그리고 당신이 getFilter 메소드를 구현해야하고, 클래스 어댑터에서이 같은 필터링 구현하는 것을 말한다
public class MyListCursorAdapter extends SimpleCursorAdapter implements Filterable{
...
@Override
public Filter getFilter() {
return new Filter(){
@Override
protected FilterResults performFiltering(CharSequence charSequence){
FilterResults results = new FilterResults();
//If there's nothing to filter on, return the original data for your list
if(charSequence == null || charSequence.length() == 0){
results.values = originalData;
results.count = originalData.getCount();
}
else{
Cursor filterResultsData = null;
filterResultsData = DB.getResults(charSequence);
results.values = filterResultsData;
results.count = filterResultsData.getCount();
}
return results;
}
@Override
protected void publishResults(CharSequence charSequence, FilterResults filterResults){
filteredData = (Cursor) filterResults.values;
if (filterResults.count > 0) {
notifyDataSetChanged();
}else{
notifyDataSetInvalidated();
}
}
};
}
}
을
적어도 내가하려고 한 것입니다. Cursor 대신 ArrayAdapter를 사용하면 꽤 잘 작동한다는 것을 알 수 있습니다. 그러나 Cursor의 경우에는 적어도 저에게는 적합하지 않았습니다. 어쩌면 내가 뭔가 잘못하고있는 것 같아. 그래서 나는 조금 혼란스러워했다. 편집 텍스트, 목록보기 및 매번 편집 텍스트에 텍스트를 넣으면 내 목록이 필터링되기를 원합니다.
이제 내 해결책을 함께 나누기 위해 내 자신의 질문에 답변 할 것입니다.