package com.dingmouren.dingdingmap.ui.search; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v4.app.FragmentActivity; import android.support.v7.widget.DefaultItemAnimator; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.util.Log; import android.view.View; import android.view.inputmethod.InputMethodManager; import android.widget.ProgressBar; import android.widget.Toast; import com.amap.api.services.core.AMapException; import com.amap.api.services.core.PoiItem; import com.amap.api.services.poisearch.PoiResult; import com.amap.api.services.poisearch.PoiSearch; import com.dingmouren.dingdingmap.MyApplication; import com.dingmouren.dingdingmap.R; import com.dingmouren.dingdingmap.ui.adapter.SearchResultAdapter; import com.dingmouren.dingdingmap.ui.search_result.SearchResultActivity; import com.dingmouren.dingdingmap.widgets.CustomRecyclerView; import com.mancj.materialsearchbar.MaterialSearchBar; import com.orhanobut.logger.Logger; import java.util.List; import butterknife.BindView; import butterknife.ButterKnife; public class SearchActivity extends FragmentActivity implements PoiSearch.OnPoiSearchListener{ private static final String TAG = SearchActivity.class.getName(); @BindView(R.id.search_bar) MaterialSearchBar mSearchBar; @BindView(R.id.recycler) CustomRecyclerView mRecycler; @BindView(R.id.progressbar) ProgressBar mProgressBar; private SearchResultAdapter mSearchResultAdapter; private PoiSearch mPoiSearch;//POI搜索 private PoiSearch.Query mPoitQuery;//POI查询条件类 private InputMethodManager inputMethodManager; private String mCurrentCity; public static void newInstance(Activity activity,String cityName){ Intent intent = new Intent(activity,SearchActivity.class); intent.putExtra("city_name",cityName); activity.startActivity(intent); } @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_search); ButterKnife.bind(this); init(); initListener(); } private void init() { if (null != getIntent()){ mCurrentCity = getIntent().getStringExtra("city_name"); Log.e(TAG,"mCurrentCity:" + mCurrentCity); } if (null == inputMethodManager)inputMethodManager = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); if (null == mSearchResultAdapter) mSearchResultAdapter = new SearchResultAdapter(); mRecycler.setLayoutManager(new LinearLayoutManager(this)); mRecycler.setHasFixedSize(true); mRecycler.setItemAnimator(new DefaultItemAnimator()); mRecycler.setAdapter(mSearchResultAdapter); } private void initListener() { mSearchBar.enableSearch(); mSearchBar.setOnSearchActionListener(new MaterialSearchBar.OnSearchActionListener() { @Override public void onSearchStateChanged(boolean b) { } @Override public void onSearchConfirmed(CharSequence charSequence) { Log.e(TAG,"mCurrentCity:" + mCurrentCity); mPoitQuery = new PoiSearch.Query(String.valueOf(charSequence),"",mCurrentCity); mPoitQuery.setPageSize(Integer.MAX_VALUE); mPoitQuery.setPageNum(1); mPoiSearch = new PoiSearch(SearchActivity.this,mPoitQuery); mPoiSearch.setOnPoiSearchListener(SearchActivity.this); mPoiSearch.searchPOIAsyn(); mProgressBar.setVisibility(View.VISIBLE); if (null != inputMethodManager){//隐藏软件盘 inputMethodManager.hideSoftInputFromWindow(getWindow().getDecorView().getWindowToken(),0); } } @Override public void onButtonClicked(int i) { } }); mSearchResultAdapter.setOnItemClickListener((view, poiItem, position) -> { SearchResultActivity.newInstance(SearchActivity.this,poiItem); finish(); }); } @Override public void onPoiSearched(PoiResult poiResult, int rCode) { if (rCode == AMapException.CODE_AMAP_SUCCESS /*&& null != poiResult && null != poiResult.getQuery() && poiResult.getQuery() == mPoitQuery*/){ if (poiResult.getPois().size() != 0) { List<PoiItem> poiItems = poiResult.getPois(); mSearchResultAdapter.setList(poiItems); mSearchResultAdapter.notifyDataSetChanged(); mRecycler.scheduleLayoutAnimation();//执行Item进入动画 mProgressBar.setVisibility(View.INVISIBLE); }else { mProgressBar.setVisibility(View.INVISIBLE); Toast.makeText(MyApplication.applicationContext,"对不起,没有搜索到相关数据",Toast.LENGTH_SHORT).show(); } }else { Toast.makeText(MyApplication.applicationContext,"对不起,没有搜索到相关数据",Toast.LENGTH_SHORT).show(); } } @Override public void onPoiItemSearched(PoiItem poiItem, int rCode) { } }