android search: customize suggestion layout
Here is the the repository which picks the place from google address search. It has implementation of full screen search list.
Customized Searchview
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:
- 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()); } }}
- put a
TextChangeListener
on yoursearchEditText
:
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
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.