SearchActivity.java 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. package com.itant.dotonmap;
  2. import android.content.Intent;
  3. import android.os.Bundle;
  4. import android.support.annotation.Nullable;
  5. import android.support.v7.app.AppCompatActivity;
  6. import android.support.v7.widget.LinearLayoutManager;
  7. import android.support.v7.widget.RecyclerView;
  8. import android.text.Editable;
  9. import android.text.TextUtils;
  10. import android.text.TextWatcher;
  11. import android.view.View;
  12. import android.widget.EditText;
  13. import com.baidu.mapapi.search.sug.OnGetSuggestionResultListener;
  14. import com.baidu.mapapi.search.sug.SuggestionResult;
  15. import com.baidu.mapapi.search.sug.SuggestionSearch;
  16. import com.baidu.mapapi.search.sug.SuggestionSearchOption;
  17. import com.itant.dotonmap.bean.LocationBean;
  18. import com.itant.library.recyclerview.CommonAdapter;
  19. import com.itant.library.recyclerview.base.ViewHolder;
  20. import com.umeng.analytics.MobclickAgent;
  21. import java.util.ArrayList;
  22. import java.util.List;
  23. /**
  24. * Created by Jason on 2018/11/18.
  25. */
  26. public class SearchActivity extends AppCompatActivity implements TextWatcher {
  27. private EditText et_search;
  28. private SuggestionSearch mSuggestionSearch;
  29. private String mCity;
  30. private List<LocationBean> mLocationList;
  31. private CommonAdapter<LocationBean> mAdapter;
  32. private RecyclerView rv_search;
  33. private OnGetSuggestionResultListener listener = new OnGetSuggestionResultListener() {
  34. public void onGetSuggestionResult(SuggestionResult res) {
  35. if (res == null || res.getAllSuggestions() == null) {
  36. return;
  37. }
  38. List<SuggestionResult.SuggestionInfo> infos = res.getAllSuggestions();
  39. mLocationList.clear();
  40. for (SuggestionResult.SuggestionInfo info : infos) {
  41. if (info.getPt() == null) {
  42. continue;
  43. }
  44. LocationBean locationBean = new LocationBean();
  45. locationBean.setCity(info.getCity());
  46. locationBean.setLat(info.getPt().latitude);
  47. locationBean.setLate6(info.getPt().latitudeE6);
  48. locationBean.setLng(info.getPt().longitude);
  49. locationBean.setLnge6(info.getPt().longitudeE6);
  50. locationBean.setName(info.getKey());
  51. if (!TextUtils.isEmpty(info.getDistrict())) {
  52. locationBean.setAddress(info.getCity() + "-" + info.getDistrict());
  53. } else {
  54. locationBean.setAddress(info.getCity());
  55. }
  56. mLocationList.add(locationBean);
  57. }
  58. mAdapter.notifyDataSetChanged();
  59. }
  60. };
  61. @Override
  62. protected void onCreate(@Nullable Bundle savedInstanceState) {
  63. super.onCreate(savedInstanceState);
  64. setContentView(R.layout.activity_search);
  65. mSuggestionSearch = SuggestionSearch.newInstance();
  66. mSuggestionSearch.setOnGetSuggestionResultListener(listener);
  67. et_search = findViewById(R.id.et_search);
  68. int code = getIntent().getIntExtra(MainActivity.KEY_REQUEST_CODE, 0);
  69. mCity = getIntent().getStringExtra(MainActivity.KEY_REQUEST_CITY);
  70. switch (code) {
  71. case MainActivity.REQUEST_CODE_1:
  72. et_search.setHint("请输入位置1");
  73. break;
  74. case MainActivity.REQUEST_CODE_2:
  75. et_search.setHint("请输入位置2");
  76. break;
  77. case MainActivity.REQUEST_CODE_3:
  78. et_search.setHint("请输入位置3");
  79. break;
  80. }
  81. et_search.addTextChangedListener(this);
  82. rv_search = findViewById(R.id.rv_search);
  83. final LinearLayoutManager layoutManager = new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false);
  84. rv_search.setLayoutManager(layoutManager);
  85. mLocationList = new ArrayList<>();
  86. mAdapter = new CommonAdapter<LocationBean>(this, R.layout.item_search_result, mLocationList) {
  87. @Override
  88. protected void convert(ViewHolder holder, final LocationBean locationBean, int position) {
  89. holder.setText(R.id.tv_name, locationBean.getName());
  90. holder.setText(R.id.tv_address, locationBean.getAddress());
  91. holder.setOnClickListener(R.id.ll_search_result, new View.OnClickListener() {
  92. @Override
  93. public void onClick(View v) {
  94. onResultClick(locationBean);
  95. }
  96. });
  97. }
  98. };
  99. rv_search.setAdapter(mAdapter);
  100. }
  101. private void onResultClick(LocationBean locationBean) {
  102. Intent intent = getIntent();
  103. intent.putExtra(MainActivity.KEY_SELECTED_LOCATION, locationBean);
  104. setResult(RESULT_OK, intent);
  105. finish();
  106. }
  107. @Override
  108. public void beforeTextChanged(CharSequence s, int start, int count, int after) {
  109. }
  110. @Override
  111. public void onTextChanged(CharSequence s, int start, int before, int count) {
  112. }
  113. @Override
  114. public void afterTextChanged(Editable s) {
  115. String keyword = s.toString();
  116. if (TextUtils.isEmpty(keyword)) {
  117. return;
  118. }
  119. String validKeyword = keyword.replaceAll(" ", "");
  120. if (TextUtils.isEmpty(validKeyword)) {
  121. return;
  122. }
  123. mSuggestionSearch.requestSuggestion((new SuggestionSearchOption())
  124. .keyword(validKeyword)
  125. .city(mCity));
  126. }
  127. @Override
  128. public void onResume() {
  129. super.onResume();
  130. MobclickAgent.onResume(this);
  131. }
  132. @Override
  133. public void onPause() {
  134. super.onPause();
  135. MobclickAgent.onPause(this);
  136. }
  137. @Override
  138. protected void onDestroy() {
  139. super.onDestroy();
  140. if (mSuggestionSearch != null) {
  141. mSuggestionSearch.destroy();
  142. }
  143. }
  144. }