diff --git a/citypicker/src/main/java/com/zaaach/citypicker/CityPickerDialogFragment.java b/citypicker/src/main/java/com/zaaach/citypicker/CityPickerDialogFragment.java index a4b6bb9..ae50a24 100644 --- a/citypicker/src/main/java/com/zaaach/citypicker/CityPickerDialogFragment.java +++ b/citypicker/src/main/java/com/zaaach/citypicker/CityPickerDialogFragment.java @@ -24,6 +24,7 @@ import android.view.WindowManager; import android.widget.EditText; import android.widget.ImageView; +import android.widget.RelativeLayout; import android.widget.TextView; import com.zaaach.citypicker.adapter.CityListAdapter; @@ -56,6 +57,7 @@ public class CityPickerDialogFragment extends DialogFragment implements TextWatc private EditText mSearchBox; private TextView mCancelBtn; private ImageView mClearAllBtn; + private RelativeLayout mShowSelectView; private LinearLayoutManager mLayoutManager; private CityListAdapter mAdapter; @@ -76,10 +78,11 @@ public class CityPickerDialogFragment extends DialogFragment implements TextWatc /** * 获取实例 + * * @param enable 是否启用动画效果 * @return */ - public static CityPickerDialogFragment newInstance(boolean enable){ + public static CityPickerDialogFragment newInstance(boolean enable) { final CityPickerDialogFragment fragment = new CityPickerDialogFragment(); Bundle args = new Bundle(); args.putBoolean("cp_enable_anim", enable); @@ -93,18 +96,18 @@ public void onCreate(@Nullable Bundle savedInstanceState) { setStyle(STYLE_NORMAL, R.style.CityPickerStyle); } - public void setLocatedCity(LocatedCity location){ + public void setLocatedCity(LocatedCity location) { mLocatedCity = location; } - public void setHotCities(List data){ - if (data != null && !data.isEmpty()){ + public void setHotCities(List data) { + if (data != null && !data.isEmpty()) { this.mHotCities = data; } } @SuppressLint("ResourceType") - public void setAnimationStyle(@StyleRes int resId){ + public void setAnimationStyle(@StyleRes int resId) { this.mAnimStyle = resId <= 0 ? mAnimStyle : resId; } @@ -124,6 +127,7 @@ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceStat private void initViews() { mRecyclerView = mContentView.findViewById(R.id.cp_city_recyclerview); + mShowSelectView = mContentView.findViewById(R.id.show_select_view); mLayoutManager = new LinearLayoutManager(getActivity(), LinearLayoutManager.VERTICAL, false); mRecyclerView.setLayoutManager(mLayoutManager); mRecyclerView.setHasFixedSize(true); @@ -138,7 +142,7 @@ private void initViews() { @Override public void onScrollStateChanged(RecyclerView recyclerView, int newState) { //确保定位城市能正常刷新 - if (newState == RecyclerView.SCROLL_STATE_IDLE){ + if (newState == RecyclerView.SCROLL_STATE_IDLE) { mAdapter.refreshLocationItem(); } } @@ -184,14 +188,14 @@ private void initData() { mHotCities.add(new HotCity("武汉", "湖北", "101200101")); } //初始化定位城市,默认为空时会自动回调定位 - if (mLocatedCity == null){ + if (mLocatedCity == null) { mLocatedCity = new LocatedCity(getString(R.string.cp_locating), "未知", "0"); locateState = LocateState.LOCATING; - }else{ + } else { locateState = LocateState.SUCCESS; } - dbManager = new DBManager(getActivity()); + dbManager = new DBManager(getContext()); mAllCities = dbManager.getAllCities(); mAllCities.add(0, mLocatedCity); mAllCities.add(1, new HotCity("热门城市", "未知", "0")); @@ -205,8 +209,8 @@ public void onStart() { dialog.setOnKeyListener(new DialogInterface.OnKeyListener() { @Override public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) { - if (keyCode == KeyEvent.KEYCODE_BACK){ - if (mOnPickListener != null){ + if (keyCode == KeyEvent.KEYCODE_BACK) { + if (mOnPickListener != null) { mOnPickListener.onCancel(); } } @@ -228,43 +232,50 @@ public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) { //测量宽高 private void measure() { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT){ + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { DisplayMetrics dm = new DisplayMetrics(); getActivity().getWindowManager().getDefaultDisplay().getRealMetrics(dm); height = dm.heightPixels; width = dm.widthPixels; - }else{ + } else { DisplayMetrics dm = getResources().getDisplayMetrics(); height = dm.heightPixels; width = dm.widthPixels; } } - /** 搜索框监听 */ + /** + * 搜索框监听 + */ @Override - public void beforeTextChanged(CharSequence s, int start, int count, int after) {} + public void beforeTextChanged(CharSequence s, int start, int count, int after) { + } @Override - public void onTextChanged(CharSequence s, int start, int before, int count) {} + public void onTextChanged(CharSequence s, int start, int before, int count) { + } @Override public void afterTextChanged(Editable s) { String keyword = s.toString(); - if (TextUtils.isEmpty(keyword)){ + if (TextUtils.isEmpty(keyword)) { mClearAllBtn.setVisibility(View.GONE); mEmptyView.setVisibility(View.GONE); + mShowSelectView.setVisibility(View.VISIBLE); mResults = mAllCities; - ((SectionItemDecoration)(mRecyclerView.getItemDecorationAt(0))).setData(mResults); + ((SectionItemDecoration) (mRecyclerView.getItemDecorationAt(0))).setData(mResults); mAdapter.updateData(mResults); - }else { + } else { mClearAllBtn.setVisibility(View.VISIBLE); //开始数据库查找 mResults = dbManager.searchCity(keyword); - ((SectionItemDecoration)(mRecyclerView.getItemDecorationAt(0))).setData(mResults); - if (mResults == null || mResults.isEmpty()){ + ((SectionItemDecoration) (mRecyclerView.getItemDecorationAt(0))).setData(mResults); + if (mResults == null || mResults.isEmpty()) { mEmptyView.setVisibility(View.VISIBLE); - }else { + mShowSelectView.setVisibility(View.GONE); + } else { mEmptyView.setVisibility(View.GONE); + mShowSelectView.setVisibility(View.VISIBLE); mAdapter.updateData(mResults); } } @@ -276,10 +287,10 @@ public void onClick(View v) { int id = v.getId(); if (id == R.id.cp_cancel) { dismiss(); - if (mOnPickListener != null){ + if (mOnPickListener != null) { mOnPickListener.onCancel(); } - }else if(id == R.id.cp_clear_all){ + } else if (id == R.id.cp_clear_all) { mSearchBox.setText(""); } } @@ -291,26 +302,26 @@ public void onIndexChanged(String index, int position) { mAdapter.scrollToSection(index); } - public void locationChanged(LocatedCity location, int state){ + public void locationChanged(LocatedCity location, int state) { mAdapter.updateLocateState(location, state); } @Override public void dismiss(int position, City data) { dismiss(); - if (mOnPickListener != null){ + if (mOnPickListener != null) { mOnPickListener.onPick(position, data); } } @Override - public void locate(){ - if (mOnPickListener != null){ + public void locate() { + if (mOnPickListener != null) { mOnPickListener.onLocate(); } } - public void setOnPickListener(OnPickListener listener){ + public void setOnPickListener(OnPickListener listener) { this.mOnPickListener = listener; } } diff --git a/citypicker/src/main/res/layout/cp_dialog_city_picker.xml b/citypicker/src/main/res/layout/cp_dialog_city_picker.xml index 5a86227..0440ce1 100644 --- a/citypicker/src/main/res/layout/cp_dialog_city_picker.xml +++ b/citypicker/src/main/res/layout/cp_dialog_city_picker.xml @@ -6,35 +6,43 @@ - - - - - - - - - - + android:layout_height="match_parent"> + + + + + + + + + + + + + \ No newline at end of file