package com.hdl.photovoltaic.ui.message;
|
|
import android.content.Context;
|
import android.content.Intent;
|
import android.os.Bundle;
|
import android.os.Handler;
|
import android.os.Looper;
|
import android.text.Editable;
|
import android.text.TextUtils;
|
import android.text.TextWatcher;
|
import android.view.View;
|
import android.view.inputmethod.InputMethodManager;
|
|
import androidx.recyclerview.widget.LinearLayoutManager;
|
|
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.config.ConstantManage;
|
import com.hdl.photovoltaic.databinding.ActivityHouseSearchBinding;
|
import com.hdl.photovoltaic.enums.HomepageTitleTabSwitch;
|
import com.hdl.photovoltaic.listener.CloudCallBeak;
|
import com.hdl.photovoltaic.other.HdlCommonLogic;
|
import com.hdl.photovoltaic.other.HdlFileLogic;
|
import com.hdl.photovoltaic.other.HdlLogLogic;
|
import com.hdl.photovoltaic.other.HdlMessageLogic;
|
import com.hdl.photovoltaic.other.HdlThreadLogic;
|
import com.hdl.photovoltaic.ui.adapter.MessageHouseAdapter;
|
import com.hdl.photovoltaic.ui.adapter.SearchHistoryAdapter;
|
import com.hdl.photovoltaic.ui.bean.MessageBean;
|
import com.hdl.photovoltaic.utils.KeyboardStateObserverUtils;
|
import com.hdl.photovoltaic.widget.refreshlayout.BGARefreshLayout;
|
import com.hdl.photovoltaic.widget.refreshlayout.HDLRefreshViewHolder;
|
import com.hdl.sdk.link.core.bean.eventbus.BaseEventBus;
|
|
import org.greenrobot.eventbus.EventBus;
|
import org.greenrobot.eventbus.Subscribe;
|
import org.greenrobot.eventbus.ThreadMode;
|
|
import java.util.ArrayList;
|
import java.util.List;
|
|
/**
|
* 搜索电站消息
|
*/
|
public class SearchMessageHouseActivity extends CustomBaseActivity {
|
private ActivityHouseSearchBinding viewBinding;
|
private Handler handler;
|
private Runnable delayedRunnable;
|
SearchHistoryAdapter searchHistoryAdapter;
|
MessageHouseAdapter searchMessageHouseAdapter;
|
|
List<MessageBean> mList = new ArrayList<>();
|
List<String> searchHistoryTitleList = new ArrayList<>();
|
private String currSearchText;
|
|
@Override
|
public Object getContentView() {
|
viewBinding = ActivityHouseSearchBinding.inflate(getLayoutInflater());
|
return viewBinding.getRoot();
|
}
|
|
@Override
|
public void onBindView(Bundle savedInstanceState) {
|
setStatusBarTranslucent();
|
getWindow().setNavigationBarColor(getColor(R.color.text_FF000000));
|
//历史记录文件夹创建
|
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) {
|
}
|
}
|
|
/**
|
* 下拉刷新的逻辑
|
*/
|
protected void pullToRefresh() {
|
viewBinding.listSrl.setDelegate(new BGARefreshLayout.BGARefreshLayoutDelegate() {
|
@Override
|
public void onBGARefreshLayoutBeginRefreshing(BGARefreshLayout refreshLayout) {
|
handler = new Handler(Looper.getMainLooper());
|
|
delayedRunnable = new Runnable() {
|
@Override
|
public void run() {
|
viewBinding.listSrl.endRefreshing();
|
getMessageHouseList(currSearchText, false);
|
}
|
};
|
// 延迟 5 秒执行
|
handler.postDelayed(delayedRunnable, 1000);
|
}
|
|
|
@Override
|
public boolean onBGARefreshLayoutBeginLoadingMore(BGARefreshLayout refreshLayout) {
|
|
// handler = new Handler(Looper.getMainLooper());
|
// delayedRunnable = new Runnable() {
|
// @Override
|
// public void run() {
|
// viewBinding.listSrl.endLoadingMore();
|
// //加载最新数据完成
|
// if (!isHouseLoadingMore) {
|
// // 滑动到了底部,执行相应的操作
|
// getMessageHouseList(currSearchText,false);
|
// }
|
// }
|
// };
|
// // 延迟 5 秒执行
|
// handler.postDelayed(delayedRunnable, 10);
|
|
return true;
|
}
|
});
|
HDLRefreshViewHolder hdlRefreshViewHolder = new HDLRefreshViewHolder(_mActivity, true);
|
hdlRefreshViewHolder.setPullDownImageResource(R.mipmap.loading_44);
|
hdlRefreshViewHolder.setChangeToReleaseRefreshAnimResId(R.drawable.loading_refresh);
|
hdlRefreshViewHolder.setRefreshingAnimResId(R.drawable.loading_refresh_end);
|
viewBinding.listSrl.setRefreshViewHolder(hdlRefreshViewHolder);
|
}
|
|
|
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(" ", "");
|
viewBinding.historyListParent.setVisibility(View.GONE);
|
viewBinding.listParent.setVisibility(View.VISIBLE);
|
viewBinding.powerStationSearchEt.clearFocus();
|
hideSoftInputFromWindow();
|
addSearchTextToList();
|
getMessageHouseList(currSearchText, true);
|
}
|
});
|
//清除
|
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);
|
viewBinding.deviceNullDataIc.getRoot().setVisibility(View.GONE);
|
searchHistoryAdapter.setList(searchHistoryTitleList);
|
viewBinding.powerStationSearchEt.requestFocus();
|
showSoftInput();
|
mList.clear();
|
searchMessageHouseAdapter.setList(mList);
|
}
|
});
|
//删除
|
viewBinding.powerStationDelIv.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
viewBinding.powerStationSearchEt.clearFocus();
|
hideSoftInputFromWindow();
|
searchHistoryTitleList = new ArrayList<>();
|
searchHistoryAdapter.setList(searchHistoryTitleList);
|
viewBinding.deviceNullDataIc.getRoot().setVisibility(View.GONE);
|
HdlFileLogic.getInstance().deleteFile(getHistoryFileNamePath());
|
|
}
|
});
|
//历史记录点击事件
|
searchHistoryAdapter.setOnclickListener(new SearchHistoryAdapter.OnClickListener() {
|
@Override
|
public void onClick(int position, String title) {
|
viewBinding.powerStationSearchEt.setText(title);
|
//搜索关键字
|
currSearchText = viewBinding.powerStationSearchEt.getText().toString().replace(" ", "");
|
if (TextUtils.isEmpty(currSearchText)) {
|
HdlThreadLogic.toast(_mActivity, R.string.search_content_null);
|
return;
|
}
|
viewBinding.powerStationSearchEt.clearFocus();
|
hideSoftInputFromWindow();
|
viewBinding.historyListParent.setVisibility(View.GONE);
|
viewBinding.listParent.setVisibility(View.VISIBLE);
|
addSearchTextToList();
|
getMessageHouseList(currSearchText, true);
|
|
}
|
});
|
//电站点击是事件
|
if (searchMessageHouseAdapter != null) {
|
searchMessageHouseAdapter.setOnclickListener(new MessageHouseAdapter.OnClickListener() {
|
@Override
|
public void onClick(int position, MessageBean messageBean) {
|
Intent intent = new Intent();
|
intent.putExtra("messageBean", new Gson().toJson(messageBean));
|
intent.setClass(_mActivity, MessageActivity.class);
|
startActivity(intent);
|
}
|
});
|
|
}
|
|
}
|
|
/**
|
* 显示软键盘
|
*/
|
public void showSoftInput() {
|
InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
|
inputMethodManager.showSoftInput(viewBinding.powerStationSearchEt, 0);
|
|
}
|
|
/**
|
* 隐藏软键盘
|
*/
|
public void hideSoftInputFromWindow() {
|
InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
|
inputMethodManager.hideSoftInputFromWindow(viewBinding.getRoot().getWindowToken(), 0);
|
}
|
|
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);
|
//初始化电站适配器
|
searchMessageHouseAdapter = new MessageHouseAdapter(_mActivity);
|
viewBinding.listRcv.setLayoutManager(new LinearLayoutManager(_mActivity));
|
viewBinding.listRcv.setAdapter(searchMessageHouseAdapter);
|
viewBinding.powerStationSearchEt.post(new Runnable() {
|
@Override
|
public void run() {
|
viewBinding.powerStationSearchEt.requestFocus();
|
}
|
});
|
|
pullToRefresh();
|
|
//在界面中使用
|
KeyboardStateObserverUtils.getKeyboardStateObserver(_mActivity).setKeyboardVisibilityListener(new KeyboardStateObserverUtils.OnKeyboardVisibilityListener() {
|
@Override
|
public void onKeyboardShow(int h) {
|
//Toast.makeText(MainActivity.this,"键盘弹出",Toast.LENGTH_SHORT).show();
|
// viewBinding.powerStationSearchEt.requestFocus();
|
|
}
|
|
@Override
|
|
public void onKeyboardHide(int h) {
|
viewBinding.powerStationSearchEt.clearFocus();
|
}
|
|
});
|
|
|
}
|
|
|
/**
|
* 输入电站名称进行过滤
|
*/
|
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());
|
|
}
|
};
|
|
/**
|
* 重新更新列表数据
|
*/
|
private void updateRecyclerViewList() {
|
if (searchMessageHouseAdapter == null) {
|
return;
|
}
|
searchMessageHouseAdapter.setList(mList);
|
nullDataUpdateUi();
|
}
|
|
/**
|
* 物理按键返回事件
|
*/
|
@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));
|
}
|
if (handler != null && delayedRunnable != null) {
|
handler.removeCallbacks(delayedRunnable);
|
}
|
super.onDestroy();
|
}
|
|
|
/**
|
* 添加历史记录
|
*/
|
private void addSearchTextToList() {
|
if (TextUtils.isEmpty(currSearchText.replace(" ", ""))) {
|
return;
|
}
|
for (int i = 0; i < searchHistoryTitleList.size(); i++) {
|
if (searchHistoryTitleList.get(i).equals(currSearchText)) {
|
searchHistoryTitleList.remove(searchHistoryTitleList.get(i));
|
}
|
}
|
final int maxValue = 10;
|
searchHistoryTitleList.add(0, currSearchText);
|
if (searchHistoryTitleList.size() > maxValue) {
|
//历史记录不能超出10
|
searchHistoryTitleList.remove(searchHistoryTitleList.get(maxValue));
|
}
|
|
}
|
|
@Subscribe(threadMode = ThreadMode.MAIN)
|
public void onEventMessage(BaseEventBus eventBus) {
|
super.onEventMessage(eventBus);
|
if (eventBus == null) {
|
return;
|
}
|
//接收外部点击事件
|
if (eventBus.getTopic().equals(ConstantManage.refresh_message_house)) {
|
EventBus.getDefault().removeStickyEvent(eventBus);
|
getMessageHouseList(currSearchText, false);
|
}
|
|
}
|
|
/**
|
* 获取账号下全部电站消息
|
*
|
* @param homeName 电站名称(搜索用的),如果是空字符串默认读取全部
|
* @param isShowLoading 是否需要加载窗(true=需要,false=不需要)
|
*/
|
private void getMessageHouseList(String homeName, boolean isShowLoading) {
|
if (isShowLoading) {
|
showLoading();
|
}
|
HdlMessageLogic.getInstance().getMessageHouseList(homeName, new CloudCallBeak<List<MessageBean>>() {
|
@Override
|
public void onSuccess(List<MessageBean> list) {
|
if (isShowLoading) {
|
hideLoading();
|
}
|
mList.clear();
|
if (list != null && !list.isEmpty()) {
|
mList.addAll(list);
|
}
|
updateRecyclerViewList();
|
|
}
|
|
@Override
|
public void onFailure(HDLException e) {
|
|
if (isShowLoading) {
|
hideLoading();
|
}
|
}
|
});
|
}
|
|
/**
|
* 没有电站列表的样式
|
*/
|
private void nullDataUpdateUi() {
|
boolean is_data = mList != null && mList.size() > 0;
|
HdlCommonLogic.getInstance().nullDataUpdateUi(_mActivity, viewBinding.deviceNullDataIc.getRoot(), viewBinding.deviceNullDataIc.nullDataGifAnimationIv, viewBinding.deviceNullDataIc.nullDataTv, getString(R.string.my_power_station_data_null), is_data);
|
}
|
|
/**
|
* 获取【搜索历史记录文件】全路径
|
*/
|
public String getHistoryFileNamePath() {
|
return HdlFileLogic.getInstance().getCurrentUserRootPath() + "/message_house_history.txt";
|
}
|
|
|
}
|