마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

Listview 필터(검색기능)이 오류는 없는데 실행이안되요 도움좀

0 추천
public void addItem(String content, String startyear, String startmonth, String startdate,
 
                    String startampm, String starthour, String startminute, String finishyear,
                    String finishmonth, String finishdate, String finishampm, String finishhour,
                    String finishminute){
    ContentListViewItem item = new ContentListViewItem();
    item.setContent(content);
    item.setStart_year(startyear);
    item.setStart_month(startmonth);
    item.setStart_date(startdate);
    item.setStart_ampm(startampm);
    item.setStart_hour(starthour);
    item.setStart_minute(startminute);
    item.setFinish_year(finishyear);
    item.setFinish_month(finishmonth);
    item.setFinish_date(finishdate);
    item.setFinish_ampm(finishampm);
    item.setFinish_hour(finishhour);
    item.setFinish_minute(finishminute);



    listViewItemList.add(item);
    notifyDataSetChanged();
adapte additem으로 넣어주고
@Override
public Filter getFilter() {
    if(listFilter == null){
        listFilter = new ListFilter();
    }
    return listFilter;
}
class ListFilter extends android.widget.Filter {
    @Override
    protected FilterResults performFiltering(CharSequence constraint) {
        FilterResults results = new FilterResults();

        if(constraint == null || constraint.length() == 0){
            results.values = listViewItemList;
            results.count = listViewItemList.size();
        } else {
            ArrayList<ContentListViewItem> itmeList = new ArrayList<ContentListViewItem>();

            for(ContentListViewItem item : listViewItemList) {
                if(item.getContent().toUpperCase().contains(constraint.toString().toUpperCase()));
                {
                    itmeList.add(item);
                }
            }
            results.values = itmeList;
            results.count = itmeList.size();
        }
        return results;
    }

    @Override
    protected void publishResults(CharSequence constraint, FilterResults results) {
        filterdeItemList = (ArrayList<ContentListViewItem>) results.values;

        if(results.count > 0){
            notifyDataSetChanged();
        } else {
            notifyDataSetChanged();
        }
    }
필터를하려고 다른 코드 참조해서 작성
public interface Comparatorinter<ContentListViewItem> {
        String compare(ContentListViewItem o1, ContentListViewItem o2);
}
필터 인터페이스입니다.
 
EditText Edit_search = (EditText)view.findViewById(R.id.Edit_search);
Edit_search.addTextChangedListener(new TextWatcher() {
    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {

    }

    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {

    }

    @Override
    public void afterTextChanged(Editable edit) {
        String filterText = edit.toString();
        ((ContentListViewAdapter)listview.getAdapter()).getFilter().filter(filterText);

    }
});
메인함수의 필터하는 부분입니다.
종합설계프로젝트1 (140 포인트) 님이 2017년 6월 25일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...