android search: customize suggestion layout

安稳与你 提交于 2019-12-02 22:46:45
Damanpreet Singh

This is how you can do it:

Step 1

Just create a layout with a RecyclerView or an expandable list or list whichever you want to use.

Step 2

In you activity (CityActivity) you need to do this:

  1. Create a handler like this:
private static class SearchHandler extends Handler {
    private WeakReference<CityActivity> mTarget;

    SearchHandler(CityActivity target) {
        mTarget = new WeakReference<>(target);
    }

    public void setTarget(CityActivity target) {
        mTarget.clear();
        mTarget = new WeakReference<>(target);
    }

    @Override
    public void handleMessage(final Message msg) {
        if (msg.what == CityActivity.TRIGGER_SEARCH) {
            CityActivity activity = mTarget.get();
            activity.makeRequest(mSearchText.trim());
        }
    }
}
  1. put a TextChangeListener on your searchEditText:
public void setTextChangeListener() {
    searchView.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) {
            mSearchText = searchView.getText().toString();
            if (!mSearchText.trim().isEmpty()) {
                handler.removeMessages(CitySelectionActivity.TRIGGER_SEARCH);
                handler.sendEmptyMessageDelayed(CityActivity.TRIGGER_SEARCH,
                        CityActivity.SEARCH_TRIGGER_DELAY_IN_MS);
            } else {
                suggestList.clear();
                fillAnything();
            }
        }

        @Override
        public void afterTextChanged(Editable s) {
        }
    });
}

Here suggestList is the data that is given to your list of

Here is the the repository which picks the place from google address search. It has implementation of full screen search list.

Customized Searchview

You should create an activity for search results and write a layout xml file where listview or recyclerview fill width using match_parent value. Content must be search results in adapter.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!