Skip to content

hsbaewa/HsHangulListFilter

Repository files navigation

HsHangulListFilter

###한글 입력 필터 라이브러리 추가 방법

root 수준의 build.gradle에 추가


	allprojects {
		repositories {
			...
			maven { url 'https://jitpack.io' }
		}
	}

app 수준의 build.gradle에 추가


	dependencies {
	        compile 'com.github.hsbaewa:HsHangulListFilter:0.0.2'
	}

//초기화
HsHangulFilter<IHsMatcherItem> mHsHangulFilter = new HsHangulFilter<>();

먼저 IHsMatcherItem을 구현하여 compareWith 함수 안에 비교 할 문자열을 리턴시킨다.


public class BlackListItem extends HsMatcherItem{
    @Override
    public String compareWith() {
        //HsHangulFilter 내부에서 비교 될 문자열 리턴
        return getName();
    }
}

필터링이 끝나면 OnPublishResultListener의 publishResults함수가 호출되므로 HsHangulFilter 인스턴스에 이벤트 리스너로 OnPublishResultListener을 등록하여 준다.


mHsHangulFilter.setOnPublishResultListener(this);

RecyclerView를 사용하여 전체 예제 소스


    class Adapter extends HsRecyclerView.HsAdapter implements Filterable, HsHangulFilter.OnPublishResultListener{
        private HsHangulFilter mHsHangulFilter = new HsHangulFilter<>();

        public BlackListAdapter() {
            mHsHangulFilter.setOnPublishResultListener(this);
        }

        @Override
        public BlackListHolder onCreateHsViewHolder(ViewGroup viewGroup, int i) {
            return new BlackListHolder(LayoutInflater.from(getContext()).inflate(R.layout.viewholder_blacklist, viewGroup, false));
        }

        @Override
        public void onBindHsViewHolder(BlackListHolder holder, int i, boolean b) {
            holder.onBind(getItem(i));
        }

        @Override
        public int getHsItemCount() {
            return mHsHangulFilter.getFilteredList().size();
        }

        @Override
        protected BlackListItem getItem(int position) {
            return mHsHangulFilter.getFilteredList().get(position);
        }

        public int addItem(BlackListItem item){
            return mHsHangulFilter.add(item);
        }

        @Override
        public Filter getFilter() {
            return mHsHangulFilter;
        }

        @Override
        public void publishResults(CharSequence constraint, Object resultValue, int resultCount) {
            notifyDataSetChanged();
        }
    }