From 198cbbe0ac7eedba20d43c47b0448845d6a279ba Mon Sep 17 00:00:00 2001 From: mac <user@users-MacBook-Pro.local> Date: 星期二, 07 五月 2024 19:10:39 +0800 Subject: [PATCH] 2024年05月07日19:10:30 --- app/src/main/res/drawable/search_back.png | 0 app/src/main/res/layout/item_search_house.xml | 39 ++ app/src/main/java/com/hdl/photovoltaic/ui/adapter/DeviceInfoAdapter.java | 2 app/src/main/res/drawable/search_bj_ff05000000.xml | 2 app/src/main/res/values/strings.xml | 3 app/src/main/java/com/hdl/photovoltaic/ui/powerstation/HouseSearchActivity.java | 374 +++++++++++++++++++++ app/src/main/res/layout/activity_house_search.xml | 158 +++++++++ app/src/main/java/com/hdl/photovoltaic/ui/bean/HouseInfoBean.java | 31 - app/src/main/java/com/hdl/photovoltaic/other/HdlFileLogic.java | 4 app/src/main/res/drawable/history_del.png | 0 app/src/main/res/layout/fragment_house_list.xml | 5 app/src/main/java/com/hdl/photovoltaic/ui/bean/HouseIdBean.java | 31 + app/src/main/java/com/hdl/photovoltaic/ui/adapter/SearchDeviceAdapter.java | 99 +++++ app/src/main/java/com/hdl/photovoltaic/ui/adapter/SearchHistoryAdapter.java | 97 +++++ app/src/main/java/com/hdl/photovoltaic/ui/adapter/SearchHouseAdapter.java | 102 ++++++ app/src/main/java/com/hdl/photovoltaic/ui/powerstation/HouseListFragment.java | 24 + app/src/main/res/layout/item_history_title.xml | 19 + 17 files changed, 948 insertions(+), 42 deletions(-) diff --git a/app/src/main/java/com/hdl/photovoltaic/other/HdlFileLogic.java b/app/src/main/java/com/hdl/photovoltaic/other/HdlFileLogic.java index af09611..2382eef 100644 --- a/app/src/main/java/com/hdl/photovoltaic/other/HdlFileLogic.java +++ b/app/src/main/java/com/hdl/photovoltaic/other/HdlFileLogic.java @@ -99,6 +99,8 @@ return getAPPInternalStoreFilesPath() + "/upgrade/firmware"; } + + /** * 鑾峰彇銆愭棩蹇楁枃浠躲�戝叏璺緞 */ @@ -319,7 +321,7 @@ } // System.out.println("鍐欏叆涓�琛屾暟鎹埌鏂囦欢鎴愬姛--->" + dataLine); } catch (Exception e) { -// System.out.println("鍐欏叆涓�琛屾暟鎹埌鏂囦欢鏈夊紓甯�--->" + e.getMessage()); + System.out.println("鍐欏叆涓�琛屾暟鎹埌鏂囦欢鏈夊紓甯�--->" + e.getMessage()); } } diff --git a/app/src/main/java/com/hdl/photovoltaic/ui/adapter/DeviceInfoAdapter.java b/app/src/main/java/com/hdl/photovoltaic/ui/adapter/DeviceInfoAdapter.java index 8a1bb87..b43aba7 100644 --- a/app/src/main/java/com/hdl/photovoltaic/ui/adapter/DeviceInfoAdapter.java +++ b/app/src/main/java/com/hdl/photovoltaic/ui/adapter/DeviceInfoAdapter.java @@ -47,7 +47,7 @@ public void onClick(View v) { try { if (mOnclickListener != null) { - mOnclickListener.onClick((int) holder.item_parent_rl.getTag(), deviceBean); + mOnclickListener.onClick((int) holder.itemView.getTag(), deviceBean); } } catch (Exception ignored) { } diff --git a/app/src/main/java/com/hdl/photovoltaic/ui/adapter/SearchDeviceAdapter.java b/app/src/main/java/com/hdl/photovoltaic/ui/adapter/SearchDeviceAdapter.java new file mode 100644 index 0000000..3c3e62c --- /dev/null +++ b/app/src/main/java/com/hdl/photovoltaic/ui/adapter/SearchDeviceAdapter.java @@ -0,0 +1,99 @@ +package com.hdl.photovoltaic.ui.adapter; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.hdl.photovoltaic.R; +import com.hdl.photovoltaic.ui.bean.DeviceBean; + +import java.util.ArrayList; +import java.util.List; + +public class SearchDeviceAdapter extends RecyclerView.Adapter<SearchDeviceAdapter.MyViewHolder> { + List<DeviceBean> mList; + + Context mContext; + + DeviceInfoAdapter.OnClickListener mOnclickListener; + + public SearchDeviceAdapter(Context context) { + + this.mContext = context; + } + + @NonNull + @Override + public SearchDeviceAdapter.MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_search_house, parent, false); + return new MyViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull SearchDeviceAdapter.MyViewHolder holder, int position) { + DeviceBean deviceBean = this.mList.get(position); + + holder.power_station_name_tv.setText(deviceBean.getHomeName()); + holder.power_station_location_tv.setText(deviceBean.getAddress()); + holder.itemView.setTag(position); + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + try { + if (mOnclickListener != null) { + mOnclickListener.onClick((int) holder.itemView.getTag(), deviceBean); + } + } catch (Exception ignored) { + } + } + }); + + } + + @Override + public int getItemCount() { + return this.mList == null ? 0 : this.mList.size(); + } + + public void setOnclickListener(DeviceInfoAdapter.OnClickListener onClickListener) { + this.mOnclickListener = onClickListener; + } + + public void setList(List<DeviceBean> newData) { + if (this.mList == null) { + this.mList = new ArrayList<>(); + } else { + this.mList.clear(); + } + + this.mList.addAll(newData); + notifyDataSetChanged(); + } + + public interface OnClickListener { + void onClick(int position, DeviceBean deviceBean); + + } + + /** + * 涓�琛屽竷灞�瀹瑰櫒 + */ + static class MyViewHolder extends RecyclerView.ViewHolder { + + + public TextView power_station_name_tv; + public TextView power_station_location_tv; + + + public MyViewHolder(@NonNull View itemView) { + super(itemView); + power_station_name_tv = itemView.findViewById(R.id.power_station_name_tv); + power_station_location_tv = itemView.findViewById(R.id.power_station_location_tv); + } + } +} diff --git a/app/src/main/java/com/hdl/photovoltaic/ui/adapter/SearchHistoryAdapter.java b/app/src/main/java/com/hdl/photovoltaic/ui/adapter/SearchHistoryAdapter.java new file mode 100644 index 0000000..3ee011b --- /dev/null +++ b/app/src/main/java/com/hdl/photovoltaic/ui/adapter/SearchHistoryAdapter.java @@ -0,0 +1,97 @@ +package com.hdl.photovoltaic.ui.adapter; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.hdl.photovoltaic.R; + + +import java.util.ArrayList; +import java.util.List; + +/** + * 鍘嗗彶璁板綍閫傞厤鍣� + */ +public class SearchHistoryAdapter extends RecyclerView.Adapter<SearchHistoryAdapter.MyViewHolder> { + + List<String> mList; + + Context mContext; + + OnClickListener mOnclickListener; + + public SearchHistoryAdapter(Context context) { + + this.mContext = context; + } + + @NonNull + @Override + public SearchHistoryAdapter.MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_history_title, parent, false); + return new MyViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull SearchHistoryAdapter.MyViewHolder holder, int position) { + String history_title = this.mList.get(position); + + holder.history_title_tv.setText(history_title); + holder.itemView.setTag(position); + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + try { + if (mOnclickListener != null) { + mOnclickListener.onClick((int) holder.itemView.getTag(), history_title); + } + } catch (Exception ignored) { + } + } + }); + + } + + @Override + public int getItemCount() { + return this.mList == null ? 0 : this.mList.size(); + } + + public void setOnclickListener(OnClickListener onClickListener) { + this.mOnclickListener = onClickListener; + } + + public void setList(List<String> newData) { + if (this.mList == null) { + this.mList = new ArrayList<>(); + } else { + this.mList.clear(); + } + + this.mList.addAll(newData); + notifyDataSetChanged(); + } + + public interface OnClickListener { + void onClick(int position, String title); + + } + + static class MyViewHolder extends RecyclerView.ViewHolder { + + + public TextView history_title_tv; + + + public MyViewHolder(@NonNull View itemView) { + super(itemView); + history_title_tv = itemView.findViewById(R.id.history_title_tv); + } + } +} diff --git a/app/src/main/java/com/hdl/photovoltaic/ui/adapter/SearchHouseAdapter.java b/app/src/main/java/com/hdl/photovoltaic/ui/adapter/SearchHouseAdapter.java new file mode 100644 index 0000000..bc858f1 --- /dev/null +++ b/app/src/main/java/com/hdl/photovoltaic/ui/adapter/SearchHouseAdapter.java @@ -0,0 +1,102 @@ +package com.hdl.photovoltaic.ui.adapter; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.hdl.photovoltaic.R; +import com.hdl.photovoltaic.ui.bean.HouseIdBean; + +import java.util.ArrayList; +import java.util.List; + +/** + * 鎼滅储鐢电珯閫傞厤鍣� + */ +public class SearchHouseAdapter extends RecyclerView.Adapter<SearchHouseAdapter.MyViewHolder> { + List<HouseIdBean> mList; + + Context mContext; + + OnClickListener mOnclickListener; + + public SearchHouseAdapter(Context context) { + + this.mContext = context; + } + + @NonNull + @Override + public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_search_house, parent, false); + return new MyViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull MyViewHolder holder, int position) { + HouseIdBean houseIdBean = this.mList.get(position); + + holder.power_station_name_tv.setText(houseIdBean.getHomeName()); + holder.power_station_location_tv.setText(houseIdBean.getAddress()); + holder.itemView.setTag(position); + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + try { + if (mOnclickListener != null) { + mOnclickListener.onClick((int) holder.itemView.getTag(), houseIdBean); + } + } catch (Exception ignored) { + } + } + }); + + } + + @Override + public int getItemCount() { + return this.mList == null ? 0 : this.mList.size(); + } + + public void setOnclickListener(OnClickListener onClickListener) { + this.mOnclickListener = onClickListener; + } + + public void setList(List<HouseIdBean> newData) { + if (this.mList == null) { + this.mList = new ArrayList<>(); + } else { + this.mList.clear(); + } + + this.mList.addAll(newData); + notifyDataSetChanged(); + } + + public interface OnClickListener { + void onClick(int position, HouseIdBean houseIdBean); + + } + + /** + * 涓�琛屽竷灞�瀹瑰櫒 + */ + static class MyViewHolder extends RecyclerView.ViewHolder { + + + public TextView power_station_name_tv; + public TextView power_station_location_tv; + + + public MyViewHolder(@NonNull View itemView) { + super(itemView); + power_station_name_tv = itemView.findViewById(R.id.power_station_name_tv); + power_station_location_tv = itemView.findViewById(R.id.power_station_location_tv); + } + } +} diff --git a/app/src/main/java/com/hdl/photovoltaic/ui/bean/HouseIdBean.java b/app/src/main/java/com/hdl/photovoltaic/ui/bean/HouseIdBean.java index a20daaa..c579118 100644 --- a/app/src/main/java/com/hdl/photovoltaic/ui/bean/HouseIdBean.java +++ b/app/src/main/java/com/hdl/photovoltaic/ui/bean/HouseIdBean.java @@ -27,6 +27,11 @@ private boolean state_select = false;//琛ㄧず鏄惁鏄剧ず閫変腑缁勪欢(true鏄剧ず) + private HouseInfoBean.Location location;//鐢电珯鍦板潃 + + + private String address;//璇︾粏鍦板潃 + public boolean isState_select() { return state_select; @@ -117,5 +122,31 @@ this.localSecret = localSecret; } + public HouseInfoBean.Location getLocation() { + return location == null ? new HouseInfoBean.Location() : location; + } + public void setLocation(HouseInfoBean.Location location) { + this.location = location; + } + + public String getAddress() { + return address == null ? "" : address; + } + + public void setAddress(String address) { + this.address = address; + } + + /** + * 鎷间綇瀹呭湴鍧� + * + * @return 浣忓畢鍦板潃 + */ + public String getHomeAddress() { + if (this.location == null) { + return this.address; + } + return this.location.getNationName() + this.location.getProvinceName() + this.location.getCityName() + this.address; + } } diff --git a/app/src/main/java/com/hdl/photovoltaic/ui/bean/HouseInfoBean.java b/app/src/main/java/com/hdl/photovoltaic/ui/bean/HouseInfoBean.java index eb572d2..aa4a54c 100644 --- a/app/src/main/java/com/hdl/photovoltaic/ui/bean/HouseInfoBean.java +++ b/app/src/main/java/com/hdl/photovoltaic/ui/bean/HouseInfoBean.java @@ -4,8 +4,7 @@ * 鐢电珯璇︽儏瀹炰綋绫� */ public class HouseInfoBean extends HouseIdBean { - private Location location;//鐢电珯鍦板潃 - private String address;//璇︾粏鍦板潃 + private String latitude;//绾害 private String longitude;//缁忓害 private String timezone;//鏃跺尯 @@ -18,22 +17,6 @@ private String zoneType;//鍖哄煙 - - public Location getLocation() { - return location == null ? new Location() : location; - } - - public void setLocation(Location location) { - this.location = location; - } - - public String getAddress() { - return address == null ? "" : address; - } - - public void setAddress(String address) { - this.address = address; - } public String getLatitude() { return latitude == null ? "" : latitude; @@ -177,15 +160,5 @@ } - /** - * 鎷间綇瀹呭湴鍧� - * - * @return 浣忓畢鍦板潃 - */ - public String getHomeAddress() { - if (this.location == null) { - return this.address; - } - return this.location.nationName + this.location.provinceName + this.location.cityName + this.address; - } + } diff --git a/app/src/main/java/com/hdl/photovoltaic/ui/powerstation/HouseListFragment.java b/app/src/main/java/com/hdl/photovoltaic/ui/powerstation/HouseListFragment.java index 60aa18f..ec46796 100644 --- a/app/src/main/java/com/hdl/photovoltaic/ui/powerstation/HouseListFragment.java +++ b/app/src/main/java/com/hdl/photovoltaic/ui/powerstation/HouseListFragment.java @@ -1,5 +1,6 @@ package com.hdl.photovoltaic.ui.powerstation; +import android.content.Intent; import android.content.pm.PackageManager; import android.os.Bundle; import android.view.View; @@ -133,12 +134,21 @@ } }); - //娣诲姞鐢电珯 + //鐢电珯娣诲姞 viewBinding.addIv.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { HdlUniLogic.getInstance().openUniMP(HDLUniMP.UNI_EVENT_OPEN_HOME_CREATION, null); + } + }); + //鐢电珯娣绘悳绱� + viewBinding.powerStationSearchClickCl.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + Intent intent = new Intent(); + intent.setClass(_mActivity, HouseSearchActivity.class); + startActivity(intent); } }); //鐢电珯璁剧疆涓嬫媺绠ご棰滆壊 @@ -173,7 +183,7 @@ } } }); - //杩涘叆鐢电珯璇︽儏,鍒犻櫎鐢电珯,绉诲姩鐢电珯浣嶇疆 + //鐢电珯璇︽儏杩涘叆,鍒犻櫎鐢电珯,绉诲姩鐢电珯浣嶇疆 houseInfoAdapter.setNoOnclickListener(new HouseInfoAdapter.OnclickListener() { @Override public void onClick(int position, HouseIdBean houseIdBean) { @@ -269,7 +279,7 @@ } }); - //缂栬緫鐢电珯鎸夐挳 + //鐢电珯缂栬緫鎸夐挳 viewBinding.editIv.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { @@ -287,7 +297,7 @@ value = isSelected ? SortValue.ascending : SortValue.descending; } }); - //鍙戠數鍔熺巼绛涢�� + //鐢电珯鍙戠數鍔熺巼绛涢�� viewBinding.stationPowerRl.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { @@ -298,7 +308,7 @@ value = isSelected ? SortValue.ascending : SortValue.descending; } }); - //褰撴棩鍙戠數閲忕瓫閫� + //鐢电珯褰撴棩鍙戠數閲忕瓫閫� viewBinding.stationDayRl.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { @@ -309,7 +319,7 @@ value = isSelected ? SortValue.ascending : SortValue.descending; } }); - //褰撴湀鍙戠數閲忕瓫閫� + //鐢电珯褰撴湀鍙戠數閲忕瓫閫� viewBinding.stationMonthRl.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { @@ -320,7 +330,7 @@ value = isSelected ? SortValue.ascending : SortValue.descending; } }); - //鐐瑰嚮璁惧 + //璁惧鐐瑰嚮 deviceInfoAdapter.setOnclickListener(new DeviceInfoAdapter.OnClickListener() { @Override public void onClick(int position, DeviceBean deviceBean) { diff --git a/app/src/main/java/com/hdl/photovoltaic/ui/powerstation/HouseSearchActivity.java b/app/src/main/java/com/hdl/photovoltaic/ui/powerstation/HouseSearchActivity.java index 058b88b..2131a6f 100644 --- a/app/src/main/java/com/hdl/photovoltaic/ui/powerstation/HouseSearchActivity.java +++ b/app/src/main/java/com/hdl/photovoltaic/ui/powerstation/HouseSearchActivity.java @@ -2,19 +2,391 @@ import android.os.Bundle; +import android.text.Editable; +import android.text.TextUtils; +import android.text.TextWatcher; +import android.view.View; +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; +import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; + +import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; +import com.hdl.linkpm.sdk.core.exception.HDLException; +import com.hdl.photovoltaic.R; import com.hdl.photovoltaic.base.CustomBaseActivity; +import com.hdl.photovoltaic.databinding.ActivityHouseSearchBinding; +import com.hdl.photovoltaic.enums.ShowErrorMode; +import com.hdl.photovoltaic.enums.SortType; +import com.hdl.photovoltaic.listener.CloudCallBeak; +import com.hdl.photovoltaic.other.HdlFileLogic; +import com.hdl.photovoltaic.other.HdlLogLogic; +import com.hdl.photovoltaic.other.HdlResidenceLogic; +import com.hdl.photovoltaic.other.HdlThreadLogic; +import com.hdl.photovoltaic.ui.adapter.SearchHistoryAdapter; +import com.hdl.photovoltaic.ui.adapter.SearchHouseAdapter; +import com.hdl.photovoltaic.ui.bean.HouseIdBean; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +/** + * 鐢电珯鎼滅储鐣岄潰 + */ public class HouseSearchActivity extends CustomBaseActivity { + private ActivityHouseSearchBinding viewBinding; + + SearchHistoryAdapter searchHistoryAdapter; + SearchHouseAdapter searchHouseAdapter; + + private List<HouseIdBean> houseListBeanIDList = new ArrayList<>(); + + private int currentHouseListPage = 0; // 褰撳墠鐢电珯鍒楄〃椤电爜 + private int currentHouseListTotal = 0; // 鐢电珯鍒楄〃鎬婚〉鐮� + private boolean isHouseLoadingMore = false; // 鏍囪鐢电珯鍒楄〃姝e湪鍔犺浇鏇村鏁版嵁 + + private String currSearchText; + + List<String> SearchHistoryTitleList = new ArrayList<>(); @Override public Object getContentView() { - return null; + viewBinding = ActivityHouseSearchBinding.inflate(getLayoutInflater()); + return viewBinding.getRoot(); } @Override public void onBindView(Bundle savedInstanceState) { + setStatusBarTranslucent(); + //鍘嗗彶璁板綍鏂囦欢澶瑰垱寤� + HdlFileLogic.getInstance().createFileDir(HdlFileLogic.getInstance().getCurrentUserRootPath()); + //鍒濆鍖栨暟鎹� + initData(); + //鍒濆鍖� + initView(); + //鍒濆鍖栫晫闈㈢洃鍚櫒 + initEvent(); + } + private void initData() { + try { + String json = HdlFileLogic.getInstance().readFile(getHistoryFileNamePath()); + if (TextUtils.isEmpty(json)) { + return; + } + SearchHistoryTitleList = new Gson().fromJson(json, new TypeToken<List<String>>() { + }.getType()); + } catch (Exception ignored) { + } + } + + + private void initEvent() { + + //鍚庨�� + viewBinding.backRl.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + viewBinding.powerStationSearchEt.addTextChangedListener(textWatcher); + + + //鎼滅储 + viewBinding.powerStationSearchTv.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + //鎼滅储鍏抽敭瀛� + currSearchText = viewBinding.powerStationSearchEt.getText().toString().replace(" ", ""); + if (TextUtils.isEmpty(currSearchText)) { + HdlThreadLogic.toast(_mActivity, R.string.search_content_null); + return; + } + viewBinding.historyListParent.setVisibility(View.GONE); + viewBinding.listParent.setVisibility(View.VISIBLE); + addSearchTextToList(); + loadNextPageHouseList(true, 1, true); + } + }); + + + //涓嬫媺绠ご棰滆壊 + viewBinding.listSrl.setColorSchemeResources(R.color.text_FF245EC3); + //涓嬫媺璇诲彇 + viewBinding.listSrl.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { + @Override + public void onRefresh() { + viewBinding.listSrl.setRefreshing(false); + loadNextPageHouseList(true, 1, true); + } + }); + //涓婃媺璇诲彇 + viewBinding.listRcv.addOnScrollListener(new RecyclerView.OnScrollListener() { + @Override + public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) { + LinearLayoutManager layoutManager = (LinearLayoutManager) recyclerView.getLayoutManager(); + if (layoutManager == null) { + return; + } + int visibleItemCount = layoutManager.getChildCount(); + int totalItemCount = layoutManager.getItemCount(); + int firstVisibleItemPosition = layoutManager.findFirstVisibleItemPosition(); + if (visibleItemCount > 0 && visibleItemCount + firstVisibleItemPosition == totalItemCount) { + if (!isHouseLoadingMore) { + // 婊戝姩鍒颁簡搴曢儴锛屾墽琛岀浉搴旂殑鎿嶄綔 + HdlLogLogic.print("--->婊戝姩鍒颁簡搴曢儴"); + loadNextPageHouseList(false, ++currentHouseListPage, false); + } + } + } + }); + //娓呴櫎 + viewBinding.powerStationClearIv.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + currSearchText = ""; + viewBinding.powerStationSearchEt.setText(""); + viewBinding.historyListParent.setVisibility(View.VISIBLE); + viewBinding.listParent.setVisibility(View.GONE); + searchHistoryAdapter.setList(SearchHistoryTitleList); + clearData(); + } + }); + //鍒犻櫎 + viewBinding.powerStationDelIv.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + SearchHistoryTitleList = new ArrayList<>(); + searchHistoryAdapter.setList(SearchHistoryTitleList); + HdlFileLogic.getInstance().deleteFile(getHistoryFileNamePath()); + } + }); + //鍘嗗彶璁板綍鐐瑰嚮浜嬩欢 + searchHistoryAdapter.setOnclickListener(new SearchHistoryAdapter.OnClickListener() { + @Override + public void onClick(int position, String title) { + viewBinding.powerStationSearchEt.setText(title); + } + }); + //鐢电珯鐐瑰嚮鏄簨浠� + searchHouseAdapter.setOnclickListener(new SearchHouseAdapter.OnClickListener() { + @Override + public void onClick(int position, HouseIdBean houseIdBean) { + + } + }); + + } + + private void initView() { + viewBinding.historyListParent.setVisibility(View.VISIBLE); + viewBinding.listParent.setVisibility(View.GONE); + viewBinding.powerStationClearIv.setVisibility(View.GONE); + //鍒濆鍖栧巻鍙茶褰曢�傞厤鍣� + searchHistoryAdapter = new SearchHistoryAdapter(_mActivity); + viewBinding.historyListRcv.setLayoutManager(new LinearLayoutManager(_mActivity)); + viewBinding.historyListRcv.setAdapter(searchHistoryAdapter); + searchHistoryAdapter.setList(SearchHistoryTitleList); + //鍒濆鍖栫數绔欓�傞厤鍣� + searchHouseAdapter = new SearchHouseAdapter(_mActivity); + viewBinding.listRcv.setLayoutManager(new LinearLayoutManager(_mActivity)); + viewBinding.listRcv.setAdapter(searchHouseAdapter); + } + + + /** + * 杈撳叆鐢电珯鍚嶇О杩涜杩囨护 + */ + private final TextWatcher textWatcher = 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) { + } + + @Override + public void afterTextChanged(Editable s) { + String et = viewBinding.powerStationSearchEt.getText().toString().replace(" ", ""); + if (TextUtils.isEmpty(et)) { + viewBinding.powerStationClearIv.setVisibility(View.GONE); + } else { + viewBinding.powerStationClearIv.setVisibility(View.VISIBLE); + } + viewBinding.powerStationSearchEt.setSelection(viewBinding.powerStationSearchEt.length()); + + } + }; + + /** + * 鐗╃悊鎸夐敭杩斿洖浜嬩欢 + */ + @Override + public void onBackPressed() { + super.onBackPressed(); + } + + @Override + protected void onDestroy() { + viewBinding.powerStationSearchEt.removeTextChangedListener(textWatcher); + if (SearchHistoryTitleList.size() > 0) { + HdlFileLogic.getInstance().deleteFile(getHistoryFileNamePath()); + HdlFileLogic.getInstance().appendFile(getHistoryFileNamePath(), new Gson().toJson(SearchHistoryTitleList)); + } + super.onDestroy(); + } + + /** + * 鍒锋柊UI锛堢數绔欙級 + * + * @param isRefreshing 琛ㄧず鏄笅鎷夊埛鏂扮殑 + */ + private void loadNextPageHouseList(boolean isRefreshing, long pageNo, boolean isClear) { + + //鎼滅储鍏抽敭瀛� + if (TextUtils.isEmpty(currSearchText)) { + return; + } + + if (isClear) { + clearData(); + } + //绗竴椤佃鍙栨暟鎹己鍒惰鍙� + if (pageNo > 1 && currentHouseListPage > currentHouseListTotal) { + --currentHouseListPage; + //褰撳墠椤典笉鑳藉ぇ浜庢�婚〉鏁� + return; + } + isHouseLoadingMore = true;//鏍囪璇诲彇鐘舵�� + if (isRefreshing) { + showLoading(); + } + + //鑾峰彇浣忓畢(鐢电珯)ID鍒楄〃 + HdlResidenceLogic.getInstance().getResidenceIdList(SortType.homeName, currSearchText, pageNo, 20, new CloudCallBeak<HdlResidenceLogic.HouseBeanClass>() { + @Override + public void onSuccess(HdlResidenceLogic.HouseBeanClass houseBeanClass) { + HdlThreadLogic.runMainThread(new Runnable() { + @Override + public void run() { + if (isRefreshing) { + hideLoading(); + } + isHouseLoadingMore = false; + if (houseBeanClass != null) { + currentHouseListTotal = (int) houseBeanClass.getTotalPage(); + currentHouseListPage = (int) houseBeanClass.getPageNo(); + //鏇存柊缂撳瓨 + setHouseIdList(houseBeanClass.getList()); + if (searchHouseAdapter != null) { + initData(); + //鏇存柊UI + searchHouseAdapter.setList(houseListBeanIDList); + } + } + } + }, _mActivity, ShowErrorMode.YES); + + } + + @Override + public void onFailure(HDLException e) { + HdlThreadLogic.runMainThread(new Runnable() { + @Override + public void run() { + if (currentHouseListPage > 1) { + --currentHouseListPage; + } + isHouseLoadingMore = false; + if (isRefreshing) { + hideLoading(); + } + + } + }, _mActivity, ShowErrorMode.YES); + } + }); + } + + private void clearData() { + if (houseListBeanIDList != null && houseListBeanIDList.size() > 0) { + houseListBeanIDList.clear(); + } + } + + public void setHouseIdList(List<HouseIdBean> list) { + if (list == null || list.size() == 0) { + return; + } + if (this.houseListBeanIDList.size() == 0) { + this.houseListBeanIDList.addAll(list); + return; + } + for (int i = 0; i < list.size(); i++) { + this.setSingleHouseId(list.get(i)); + } + } + + /** + * 娣诲姞鐢电珯Id鍒板垪琛ㄩ噷闈� + * + * @param houseIdBean -鐢电珯Id瀵硅薄 + */ + public void setSingleHouseId(HouseIdBean houseIdBean) { + try { + if (houseIdBean == null) { + return; + } + boolean if_boolean = false; + for (int i = 0; i < houseListBeanIDList.size(); i++) { + if (houseListBeanIDList.get(i).getHomeId().equals(houseIdBean.getHomeId())) { + //瀛樺湪鏇挎崲 + houseListBeanIDList.remove(i); + houseListBeanIDList.add(i, houseIdBean); + if_boolean = true; + break; + } + } + if (!if_boolean) { + //娌℃湁娣诲姞 + this.houseListBeanIDList.add(houseIdBean); + } + } catch (Exception e) { + String mes = e.getMessage(); + HdlLogLogic.print("--->" + mes); + } + } + + /** + * 娣诲姞鍘嗗彶璁板綍 + */ + private void addSearchTextToList() { + for (int i = 0; i < SearchHistoryTitleList.size(); i++) { + if (SearchHistoryTitleList.get(i).equals(currSearchText)) { + SearchHistoryTitleList.remove(SearchHistoryTitleList.get(i)); + } + } + SearchHistoryTitleList.add(currSearchText); + // 鍊掑簭鎺掑垪鏁版嵁(鎼滅储鏈�鍚庢帓鍦ㄥ墠闈�) + Collections.reverse(SearchHistoryTitleList); + if (SearchHistoryTitleList.size() > 10) { + //鍘嗗彶璁板綍涓嶈兘瓒呭嚭10 + SearchHistoryTitleList.remove(SearchHistoryTitleList.get(11)); + } + + } + + /** + * 鑾峰彇銆愭悳绱㈠巻鍙茶褰曟枃浠躲�戝叏璺緞 + */ + public String getHistoryFileNamePath() { + return HdlFileLogic.getInstance().getCurrentUserRootPath() + "/house_history.txt"; } } \ No newline at end of file diff --git a/app/src/main/res/drawable/history_del.png b/app/src/main/res/drawable/history_del.png new file mode 100644 index 0000000..6dcdb6a --- /dev/null +++ b/app/src/main/res/drawable/history_del.png Binary files differ diff --git a/app/src/main/res/drawable/search_back.png b/app/src/main/res/drawable/search_back.png new file mode 100644 index 0000000..12a6346 --- /dev/null +++ b/app/src/main/res/drawable/search_back.png Binary files differ diff --git a/app/src/main/res/drawable/search_bj_edeff2.xml b/app/src/main/res/drawable/search_bj_ff05000000.xml similarity index 76% rename from app/src/main/res/drawable/search_bj_edeff2.xml rename to app/src/main/res/drawable/search_bj_ff05000000.xml index 23e1bbe..64685ec 100644 --- a/app/src/main/res/drawable/search_bj_edeff2.xml +++ b/app/src/main/res/drawable/search_bj_ff05000000.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <corners android:radius="@dimen/dp_17" /> - <solid android:color="@color/text_EDEFF2" /> + <solid android:color="#05000000" /> </shape> \ No newline at end of file diff --git a/app/src/main/res/layout/activity_house_search.xml b/app/src/main/res/layout/activity_house_search.xml index e4c352c..977d256 100644 --- a/app/src/main/res/layout/activity_house_search.xml +++ b/app/src/main/res/layout/activity_house_search.xml @@ -4,6 +4,164 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" + android:background="@color/text_F5F7FA" tools:context=".ui.powerstation.HouseSearchActivity"> + <!--鎼滅储--> + <RelativeLayout + android:id="@+id/power_station_search_cl" + android:layout_width="match_parent" + android:layout_height="@dimen/dp_35" + android:layout_marginTop="@dimen/dp_48" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent"> + + <RelativeLayout + android:id="@+id/back_rl" + android:layout_width="@dimen/dp_50" + android:layout_height="match_parent"> + + <ImageView + android:id="@+id/power_station_back_iv" + android:layout_width="@dimen/dp_10" + android:layout_height="@dimen/dp_17" + android:layout_alignParentStart="true" + android:layout_centerVertical="true" + android:layout_marginStart="@dimen/dp_16" + android:src="@drawable/search_back" /> + </RelativeLayout> + + + <RelativeLayout + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_marginStart="@dimen/dp_7" + android:layout_marginEnd="@dimen/dp_21" + android:layout_toStartOf="@+id/power_station_search_tv" + android:layout_toEndOf="@+id/back_rl" + android:background="@drawable/search_bj_ff05000000"> + + <ImageView + android:id="@+id/power_station_search_iv" + android:layout_width="@dimen/dp_18" + android:layout_height="@dimen/dp_18" + android:layout_alignParentStart="true" + android:layout_centerVertical="true" + android:layout_marginStart="@dimen/dp_13" + android:src="@drawable/search_path" /> + + <EditText + android:id="@+id/power_station_search_et" + android:layout_width="0dp" + android:layout_height="match_parent" + android:layout_alignParentEnd="true" + android:layout_centerVertical="true" + android:layout_marginStart="@dimen/dp_11" + android:layout_marginEnd="@dimen/dp_40" + android:layout_toEndOf="@+id/power_station_search_iv" + android:background="@null" + android:gravity="start|center_vertical" + android:hint="Search the power station" + android:textColor="@color/text_90000000" + android:textColorHint="@color/text_40000000" + android:textSize="@dimen/text_14" /> + + <ImageView + android:id="@+id/power_station_clear_iv" + android:layout_width="@dimen/dp_20" + android:layout_height="@dimen/dp_20" + android:layout_alignParentEnd="true" + android:layout_centerVertical="true" + android:layout_marginEnd="@dimen/dp_13" + android:src="@drawable/clear" /> + </RelativeLayout> + + <TextView + android:id="@+id/power_station_search_tv" + android:layout_width="wrap_content" + android:layout_height="match_parent" + android:layout_alignParentEnd="true" + android:layout_centerVertical="true" + android:layout_marginEnd="@dimen/dp_21" + android:gravity="center" + android:text="@string/search" + android:textColor="@color/text_90000000" + android:textSize="@dimen/text_16" /> + + + </RelativeLayout> + + <androidx.constraintlayout.widget.ConstraintLayout + android:id="@+id/history_list_parent" + android:layout_width="match_parent" + android:layout_height="0dp" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/power_station_search_cl"> + + <TextView + android:id="@+id/history_list_title_tv" + android:layout_width="wrap_content" + android:layout_height="@dimen/dp_23" + android:layout_marginStart="@dimen/dp_16" + android:layout_marginTop="@dimen/dp_23" + android:layout_marginEnd="@dimen/dp_21" + android:text="@string/history_search" + android:textColor="@color/text_90000000" + android:textSize="@dimen/text_16" + android:textStyle="bold" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + + <ImageView + android:id="@+id/power_station_del_iv" + android:layout_width="@dimen/dp_26" + android:layout_height="@dimen/dp_26" + android:layout_marginTop="@dimen/dp_21" + android:layout_marginEnd="@dimen/dp_16" + android:src="@drawable/history_del" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + + <androidx.recyclerview.widget.RecyclerView + android:id="@+id/history_list_rcv" + android:layout_width="match_parent" + android:layout_height="0dp" + android:layout_marginTop="67dp" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + + </androidx.constraintlayout.widget.ConstraintLayout> + + <androidx.constraintlayout.widget.ConstraintLayout + android:id="@+id/list_parent" + android:layout_width="match_parent" + android:layout_height="0dp" + android:layout_marginTop="@dimen/dp_30" + android:visibility="gone" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/power_station_search_cl"> + + <androidx.swiperefreshlayout.widget.SwipeRefreshLayout + android:id="@+id/list_srl" + android:layout_width="match_parent" + android:layout_height="0dp" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent"> + + <androidx.recyclerview.widget.RecyclerView + android:id="@+id/list_rcv" + android:layout_width="match_parent" + android:layout_height="match_parent" /> + </androidx.swiperefreshlayout.widget.SwipeRefreshLayout> + + </androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_house_list.xml b/app/src/main/res/layout/fragment_house_list.xml index 9ecfa9c..4308a14 100644 --- a/app/src/main/res/layout/fragment_house_list.xml +++ b/app/src/main/res/layout/fragment_house_list.xml @@ -91,11 +91,12 @@ app:layout_constraintTop_toTopOf="parent"> <RelativeLayout + android:id="@+id/power_station_search_click_cl" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginEnd="@dimen/dp_17" android:layout_toStartOf="@+id/power_station_default_condition_iv" - android:background="@drawable/search_bj_edeff2"> + android:background="@drawable/search_bj_ff05000000"> <ImageView android:id="@+id/power_station_search_iv" @@ -443,7 +444,7 @@ android:layout_height="@dimen/dp_35" android:layout_marginStart="@dimen/dp_13" android:layout_marginEnd="@dimen/dp_16" - android:background="@drawable/search_bj_edeff2" + android:background="@drawable/search_bj_ff05000000" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent"> diff --git a/app/src/main/res/layout/item_history_title.xml b/app/src/main/res/layout/item_history_title.xml new file mode 100644 index 0000000..4837694 --- /dev/null +++ b/app/src/main/res/layout/item_history_title.xml @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="utf-8"?> +<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="@dimen/dp_51"> + + <TextView + android:id="@+id/history_title_tv" + android:layout_width="wrap_content" + android:layout_height="@dimen/dp_23" + android:layout_marginStart="@dimen/dp_16" + android:ellipsize="end" + android:singleLine="true" + android:textColor="@color/text_90000000" + android:textSize="@dimen/text_16" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + +</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/item_search_house.xml b/app/src/main/res/layout/item_search_house.xml new file mode 100644 index 0000000..327170e --- /dev/null +++ b/app/src/main/res/layout/item_search_house.xml @@ -0,0 +1,39 @@ +<?xml version="1.0" encoding="utf-8"?> +<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="@dimen/dp_75"> + + <ImageView + android:id="@+id/power_station_search_iv" + android:layout_width="@dimen/dp_18" + android:layout_height="@dimen/dp_18" + android:layout_marginStart="@dimen/dp_16" + android:src="@drawable/search_path" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + + <TextView + android:id="@+id/power_station_name_tv" + android:layout_width="wrap_content" + android:layout_height="@dimen/dp_23" + android:layout_marginStart="@dimen/dp_23" + android:ellipsize="end" + android:singleLine="true" + android:textColor="@color/text_90000000" + android:textSize="@dimen/text_16" + app:layout_constraintStart_toEndOf="@+id/power_station_search_iv" + app:layout_constraintTop_toTopOf="parent" /> + + <TextView + android:id="@+id/power_station_location_tv" + android:layout_width="wrap_content" + android:layout_height="@dimen/dp_17" + android:layout_marginTop="@dimen/dp_7" + android:textColor="@color/text_40000000" + android:textSize="@dimen/text_12" + app:layout_constraintStart_toStartOf="@+id/power_station_name_tv" + app:layout_constraintTop_toBottomOf="@+id/power_station_name_tv" /> + + +</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 80c0478..f94c772 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -276,6 +276,9 @@ <string name="installed_capacity">瑁呮満瀹归噺</string> <string name="generation">鍙戠數閲�</string> <string name="station_name">鐢电珯鍚嶇О</string> + <string name="search">鎼滅储</string> + <string name="history_search">鍘嗗彶鎼滅储</string> + <string name="search_content_null">鎼滅储鍐呭涓嶈兘涓虹┖.</string> </resources> \ No newline at end of file -- Gitblit v1.8.0