首页设备列表,添加设备

This commit is contained in:
fengjignqi
2026-05-19 16:40:34 +08:00
parent 182289f82d
commit 99e0ee56a5
24 changed files with 496 additions and 188 deletions

View File

@@ -7,9 +7,9 @@ package com.ckkj.water;
*/
public class ConstantUtil {
public static final String ADD_DEVICE_FLAG = "add_device_flag";
//页面跳转来源
public static final String ACTIVITY_NAVIGATE_FLAG = "activity_navigate_flag";
public static final String SHARE_PRE_NAME = "mingdengbazi_pre";
public static final String FIRST_ENTER_APP_AGREEMENT_TIPS = "first_enter_app_agreement_tips";
public static final String FIRST_ENTER_APP_FLAG = "first_enter_app_flag";
@@ -20,47 +20,12 @@ public class ConstantUtil {
public static final String USER_ID = "user_id";
public static final String USER_RONGCLOUD_ID = "user_rongcloud_id";
public static final String USER_INFO_JSON_CONTENT = "user_info_json_content";
public static final String SEARCH_HISTORY = "search_history";
public static final String USER_CONFIRM_UPLOAD_INFO = "user_confirm_upload_info";
public static final String GROUP_LAST_TIME = "group_last_time";
//用户是否同意隐私政策
public static final String PRIVACY_POLICY_AGREED = "privacy_policy_agreed";
//App访问验证code
public static final String APP_ENTER_CODE_VALUE = "app_enter_code_value";
//用户是否允许定位授权
public static final String USER_AUTH_LOCATION = "user_auth_location";
//用户是否请求过定位权限
public static final String USER_REQUEST_LOCATION_PERMISSION = "user_request_location_permission";
//用户是否请求过文件访问权限
public static final String USER_REQUEST_READ_WRITE_PERMISSION = "user_request_read_write_permission";
//用户是否请求过麦克风权限
public static final String USER_REQUEST_RECORD_AUDIO_PERMISSION = "user_request_record_audio_permission";
//用户是否请求过相机权限
public static final String USER_REQUEST_CAMERA_PERMISSION = "user_request_camera_permission";
//用户当前定位省份
public static final String USER_LOCATION_PROVICE_NAME = "user_location_provice_name";
//用户当前定位城市
public static final String USER_LOCATION_CITY_NAME = "user_location_city_name";
//用户当前定位县区
public static final String USER_LOCATION_COUNTY_NAME = "user_location_county_name";
public static final String USER_SELECT_PROVICE_NAME = "user_select_provice_name";
//用户当前定位城市
public static final String USER_SELECT_CITY_NAME = "user_select_city_name";
//用户当前定位县区
public static final String USER_SELECT_COUNTY_NAME = "user_select_county_name";
//首页用户定位code
public static final String INDEX_LOCATION_PROVINCE_CODE = "index_location_province_code";
//用户当前定位县区
public static final String INDEX_LOCATION_CITY_CODE = "index_location_city_code";
//首页用户定位code
public static final String INDEX_SELECT_PROVINCE_CODE = "index_select_province_code";
//用户当前定位县区
public static final String INDEX_SELECT_CITY_CODE = "index_select_city_code";
//用户提交的企业会员认证结果
public static final String USER_REVIEW_STATUS_CODE = "user_review_status_code";
//用户是否为企业会员
public static final String USER_IS_VIP_FLAG = "user_is_vip_flag";
//用户资料中的个人手机号码
public static final String USER_INFO_PHONE_NUMBER = "user_info_phone_number";
//用户资料中头像
@@ -69,36 +34,6 @@ public class ConstantUtil {
public static final String USER_NICKNAME = "user_nickname";
//企业名称
public static final String USER_UPLOAD_COMPANY_NAME = "user_upload_company_name";
//单位名称
public static final String GOODS_UNIT_JSON = "goods_unit_json";
//运费json
public static final String TRANS_COST_JSON = "trans_cost_json";
//品牌名称json
public static final String GOODS_BRAND_JSON = "goods_brand_json";
//所有字典
public static final String MRO_BRAND_DICT_JSON = "mro_dict_json";
/********************大宗相关*********************/
public static final String DICT_DATAS_JSON = "dict_datas_json";
//生成订单来自何处 100商品详情 200购物车
public static final int CREAT_ORDER_FROM_PRODUCT_CODE = 100;
public static final int CREAT_ORDER_FROM_SHOPCAR_CODE = 200;
/********************订单相关*********************/
public static final int ORDER_ALLCODE = -1;//全部
public static final int ORDER_DAIZHIFU = 0;//待支付
public static final int ORDER_WEIFAHUO = 1;//未发货
public static final int ORDER_DAISHOUHUO = 2;//待收货
public static final int ORDER_YIWANCHENG = 3;//已完成
public static final int ORDER_CANCELED = 4;
public static final int ORDER_SHOUHOU = 5;//待收货
public static final int ORDER_BUFENFAHUO = 7;//待收货
public static final int ORDER_DAIQUEREN = 8;//待确认
public static final int ORDER_JIESUANZHONG = 9;//结算中
public static final int ORDER_CHULIZHONG = 0;//处理中
/*******询价单********/
public static final int XJ_BAOJIAZHONG_CODE = 0;//报价中
public static final int XJ_YIBAOJIA_CODE = 1;//已报价
public static final int XJ_YICHEXIAO_CODE = 2;//已撤销
//权限申请请求
public static final int PERMISSION_QUEST = 500;
/***************权限相关*******************/

View File

@@ -21,6 +21,7 @@ import com.ckkj.water.device.mvp.DeviceContract;
import com.ckkj.water.device.mvp.DeviceImpl;
import com.ckkj.water.device.mvp.DevicePresenter;
import com.ckkj.water.network.BaseBean;
import com.ckkj.water.utils.manager.ActivityManager;
import com.ckkj.water.utils.manager.ThemeManager;
import com.ckkj.water.utils.show.ToastUtil;
import com.gyf.immersionbar.ImmersionBar;
@@ -48,6 +49,7 @@ public class AddDeviceActivity extends BaseActivity<AddDeviceLayoutBinding, Devi
@Override
public void initData(Bundle savedInstanceState) {
super.initData(savedInstanceState);
ActivityManager.addActivity(this,getClass().getSimpleName() + "_" + ConstantUtil.ADD_DEVICE_FLAG);
ImmersionBar.with(this)
.statusBarColor(R.color.mainBackgroundColor) // 设置状态栏颜色
.statusBarDarkFont(ThemeManager.isAppThemeLight(mContext)) // 设置状态栏字体为黑色
@@ -185,4 +187,24 @@ public class AddDeviceActivity extends BaseActivity<AddDeviceLayoutBinding, Devi
public void onPermissionsDenied(int requestCode, @NonNull List<String> perms) {
}
@Override
public void addDeviceSuccess(BaseBean bean) {
}
@Override
public void editDeviceInfoSuccess(BaseBean bean) {
}
@Override
public void deleteDeviceSuccess(BaseBean bean) {
}
@Override
public void turnOnOffDeviceSuccess(BaseBean bean) {
}
}

View File

@@ -8,6 +8,7 @@ import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import com.ckkj.water.ConstantUtil;
import com.ckkj.water.R;
import com.ckkj.water.base.BaseActivity;
import com.ckkj.water.databinding.DeviceConnectLayoutBinding;
@@ -15,6 +16,7 @@ import com.ckkj.water.device.mvp.DeviceContract;
import com.ckkj.water.device.mvp.DeviceImpl;
import com.ckkj.water.device.mvp.DevicePresenter;
import com.ckkj.water.network.BaseBean;
import com.ckkj.water.utils.manager.ActivityManager;
import com.ckkj.water.utils.show.ToastUtil;
import com.gyf.immersionbar.ImmersionBar;
@@ -36,6 +38,7 @@ public class DeviceConnectActivity extends BaseActivity<DeviceConnectLayoutBindi
@Override
public void initData(Bundle savedInstanceState) {
super.initData(savedInstanceState);
ActivityManager.addActivity(this,getClass().getSimpleName() + "_" + ConstantUtil.ADD_DEVICE_FLAG);
ImmersionBar.with(this)
.statusBarColor(R.color.color_F9F9F9)
.statusBarDarkFont(true)
@@ -94,4 +97,24 @@ public class DeviceConnectActivity extends BaseActivity<DeviceConnectLayoutBindi
public void logOut(BaseBean bean) {
}
@Override
public void addDeviceSuccess(BaseBean bean) {
}
@Override
public void editDeviceInfoSuccess(BaseBean bean) {
}
@Override
public void deleteDeviceSuccess(BaseBean bean) {
}
@Override
public void turnOnOffDeviceSuccess(BaseBean bean) {
}
}

View File

@@ -131,4 +131,24 @@ public class DeviceControlActivity extends BaseActivity<DeviceControlLayoutBindi
public void logOut(BaseBean bean) {
}
@Override
public void addDeviceSuccess(BaseBean bean) {
}
@Override
public void editDeviceInfoSuccess(BaseBean bean) {
}
@Override
public void deleteDeviceSuccess(BaseBean bean) {
}
@Override
public void turnOnOffDeviceSuccess(BaseBean bean) {
}
}

View File

@@ -65,4 +65,24 @@ public class DeviceInfoActivity extends BaseActivity<DeviceInfoLayoutBinding, De
public void logOut(BaseBean bean) {
}
@Override
public void addDeviceSuccess(BaseBean bean) {
}
@Override
public void editDeviceInfoSuccess(BaseBean bean) {
}
@Override
public void deleteDeviceSuccess(BaseBean bean) {
}
@Override
public void turnOnOffDeviceSuccess(BaseBean bean) {
}
}

View File

@@ -1,9 +1,11 @@
package com.ckkj.water.device;
import android.os.Bundle;
import android.os.Handler;
import android.text.TextUtils;
import android.view.View;
import com.ckkj.water.ConstantUtil;
import com.ckkj.water.R;
import com.ckkj.water.base.BaseActivity;
import com.ckkj.water.databinding.SetDeviceNameLayoutBinding;
@@ -11,6 +13,7 @@ import com.ckkj.water.device.mvp.DeviceContract;
import com.ckkj.water.device.mvp.DeviceImpl;
import com.ckkj.water.device.mvp.DevicePresenter;
import com.ckkj.water.network.BaseBean;
import com.ckkj.water.utils.manager.ActivityManager;
import com.ckkj.water.utils.show.ToastUtil;
import com.gyf.immersionbar.ImmersionBar;
@@ -56,12 +59,33 @@ public class DeviceReNameActivity extends BaseActivity<SetDeviceNameLayoutBindin
ToastUtil.showShort(mContext,getString(R.string.input_device_name_hint));
return;
}
ToastUtil.showShort(mContext,"名称保存成功");
goTo(mContext,DeviceControlActivity.class,null);
// ToastUtil.showShort(mContext,"名称保存成功");
// goTo(mContext,DeviceControlActivity.class,null);
showLoadingDialog();
mPresenter.addDevice();
break;
}
}
/**
* 添加设备成功
* @param bean
*/
@Override
public void addDeviceSuccess(BaseBean bean) {
hideDialogLoading();
ToastUtil.showShort(mContext,"设备保存成功");
ActivityManager.removeActivityByTag(ConstantUtil.ADD_DEVICE_FLAG);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
goTo(mContext,DeviceControlActivity.class,null);
finish();
}
},800);
}
@Override
public int getLayoutResId(Bundle savedInstanceState) {
return 0;
@@ -76,4 +100,20 @@ public class DeviceReNameActivity extends BaseActivity<SetDeviceNameLayoutBindin
public void logOut(BaseBean bean) {
}
@Override
public void editDeviceInfoSuccess(BaseBean bean) {
}
@Override
public void deleteDeviceSuccess(BaseBean bean) {
}
@Override
public void turnOnOffDeviceSuccess(BaseBean bean) {
}
}

View File

@@ -140,4 +140,24 @@ public class DeviceSettingsActivity extends BaseActivity<DeviceSettingsLayoutBin
public void logOut(BaseBean bean) {
}
@Override
public void addDeviceSuccess(BaseBean bean) {
}
@Override
public void editDeviceInfoSuccess(BaseBean bean) {
}
@Override
public void deleteDeviceSuccess(BaseBean bean) {
}
@Override
public void turnOnOffDeviceSuccess(BaseBean bean) {
}
}

View File

@@ -25,6 +25,7 @@ import com.ckkj.water.device.mvp.DeviceImpl;
import com.ckkj.water.device.mvp.DevicePresenter;
import com.ckkj.water.network.BaseBean;
import com.ckkj.water.permission.PermissionActivity;
import com.ckkj.water.utils.manager.ActivityManager;
import com.ckkj.water.utils.manager.ThemeManager;
import com.ckkj.water.utils.show.ToastUtil;
import com.ckkj.water.utils.text.TextUtil;
@@ -56,7 +57,7 @@ public class SelectWifiActivity extends BaseActivity<DeviceResetWifiBinding, Dev
super.onCreate(savedInstanceState);
wifiManager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);
wifiScanReceiver = new WifiScanReceiver();
ActivityManager.addActivity(this,getClass().getSimpleName() + "_" + ConstantUtil.ADD_DEVICE_FLAG);
}
@Override
@@ -190,6 +191,26 @@ public class SelectWifiActivity extends BaseActivity<DeviceResetWifiBinding, Dev
}
}
@Override
public void addDeviceSuccess(BaseBean bean) {
}
@Override
public void editDeviceInfoSuccess(BaseBean bean) {
}
@Override
public void deleteDeviceSuccess(BaseBean bean) {
}
@Override
public void turnOnOffDeviceSuccess(BaseBean bean) {
}
private class WifiScanReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {

View File

@@ -1,6 +1,12 @@
package com.ckkj.water.device.mvp;
import com.ckkj.water.base.IView;
import com.ckkj.water.index.mvp.IndexContract;
import com.ckkj.water.network.BaseBean;
import org.json.JSONObject;
import java.util.Map;
public class DeviceContract {
public interface CallBack<T> {
@@ -8,8 +14,27 @@ public class DeviceContract {
void fail(String msg);
}
public interface DataModel{
//查询设备信息
void getDeviceInfomation(Map<String,String> map, IndexContract.CallBack callBack);
//添加设备
void addDevice(JSONObject json, IndexContract.CallBack callBack);
//修改设备信息
void editDeviceInfo(JSONObject json, IndexContract.CallBack callBack);
//删除设备信息
void deleteDevice(JSONObject json, IndexContract.CallBack callBack);
//手动开启关闭设备
void turnOnOffDevice(JSONObject json, IndexContract.CallBack callBack);
}
public interface DeviceView extends IView {
//添加设备成功g
void addDeviceSuccess(BaseBean bean);
void editDeviceInfoSuccess(BaseBean bean);
void deleteDeviceSuccess(BaseBean bean);
void turnOnOffDeviceSuccess(BaseBean bean);
}
}

View File

@@ -1,5 +1,78 @@
package com.ckkj.water.device.mvp;
import com.ckkj.water.index.mvp.IndexContract;
import com.ckkj.water.network.BaseBean;
import com.ckkj.water.network.NetWorkManager;
import org.json.JSONObject;
import java.util.Map;
import io.reactivex.Observer;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.annotations.NonNull;
import io.reactivex.disposables.Disposable;
import io.reactivex.schedulers.Schedulers;
public class DeviceImpl implements DeviceContract.DataModel{
@Override
public void getDeviceInfomation(Map<String, String> map, IndexContract.CallBack callBack) {
}
/**
* 添加设备
* @param json
* @param callBack
*/
@Override
public void addDevice(JSONObject json, IndexContract.CallBack callBack) {
try {
NetWorkManager.getRequest().addDevice(NetWorkManager.getToken(), NetWorkManager.toRequestBody(json))
.subscribeOn(Schedulers.io())
.unsubscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<BaseBean>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
}
@Override
public void onNext(@NonNull BaseBean bean) {
if (bean.getCode() == 200) {
callBack.success(bean,0);
} else {
callBack.fail(bean.getMessage());
}
}
@Override
public void onError(@NonNull Throwable e) {
callBack.fail(e.getMessage());
}
@Override
public void onComplete() {
}
});
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void editDeviceInfo(JSONObject json, IndexContract.CallBack callBack) {
}
@Override
public void deleteDevice(JSONObject json, IndexContract.CallBack callBack) {
}
@Override
public void turnOnOffDevice(JSONObject json, IndexContract.CallBack callBack) {
}
}

View File

@@ -1,6 +1,13 @@
package com.ckkj.water.device.mvp;
import com.ckkj.water.base.BasePresenter;
import com.ckkj.water.index.mvp.IndexContract;
import com.ckkj.water.network.BaseBean;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.Random;
public class DevicePresenter extends BasePresenter<DeviceContract.DeviceView> {
private DeviceImpl impl;
@@ -8,4 +15,33 @@ public class DevicePresenter extends BasePresenter<DeviceContract.DeviceView> {
public DevicePresenter(DeviceImpl impl) {
this.impl = impl;
}
public void addDevice() {
try {
JSONObject json = new JSONObject();
json.put("deviceNo",System.currentTimeMillis() + "");
json.put("deviceName",new Random().nextInt(99) + "号设备");
json.put("wifiName","橙空科技WiFi");
json.put("wifiPassword","12321212");
json.put("deviceEm","213123123123");
json.put("deviceSn","sdfsd32423gdfgdf3");
json.put("fwVer","fwVer-56565644");
json.put("macAddress","2E:8H:00:KK:N7");
impl.addDevice(json, new IndexContract.CallBack<BaseBean>() {
@Override
public void success(BaseBean bean,int total) {
if(DevicePresenter.this.getView() != null){
DevicePresenter.this.getView().addDeviceSuccess(bean);
}
}
@Override
public void fail(String msg) {
}
});
} catch (JSONException e) {
throw new RuntimeException(e);
}
}
}

View File

@@ -10,6 +10,7 @@ import androidx.annotation.Nullable;
import com.ckkj.water.R;
import com.ckkj.water.base.BaseFragment;
import com.ckkj.water.custom.view.CustomRefreshHeader;
import com.ckkj.water.databinding.IndexFragmentLayoutBinding;
import com.ckkj.water.device.AddDeviceActivity;
import com.ckkj.water.device.DeviceControlActivity;
@@ -23,6 +24,8 @@ import com.ckkj.water.permission.PermissionActivity;
import com.ckkj.water.utils.show.ToastUtil;
import com.maning.mlkitscanner.scan.MNScanManager;
import com.maning.mlkitscanner.scan.callback.act.MNScanCallback;
import com.scwang.smart.refresh.footer.ClassicsFooter;
import com.scwang.smart.refresh.layout.api.RefreshHeader;
import java.util.ArrayList;
import java.util.List;
@@ -42,16 +45,21 @@ public class IndexFragment extends BaseFragment<IndexFragmentLayoutBinding, Inde
@Override
public void initData(@Nullable Bundle savedInstanceState) {
IndexDeviceEntity entity = new IndexDeviceEntity("智能浇水设备A1","YA226641000101","工作中",100);
IndexDeviceEntity entity2 = new IndexDeviceEntity("智能浇水设备B1","YA22664100000","工作中",80);
IndexDeviceEntity entity3 = new IndexDeviceEntity("智能浇水设备C5","YA234534000101","工作中",70);
IndexDeviceEntity entity4 = new IndexDeviceEntity("智能浇水设备D6","YA2266678543101","工作中",50);
devList.add(entity);
devList.add(entity2);
devList.add(entity3);
devList.add(entity4);
// 设置自定义刷新头
RefreshHeader header = new CustomRefreshHeader(mContext);
viewBinding.refresh.setRefreshHeader(header);
viewBinding.refresh.setRefreshFooter(new ClassicsFooter(mContext));
viewBinding.refresh.setOnRefreshListener(layout -> {
mCurrentPage = 1;
mPresenter.getDevicesList(mCurrentPage);
});
viewBinding.refresh.setOnLoadMoreListener(layout -> {
mCurrentPage++;
mPresenter.getDevicesList(mCurrentPage);
});
showLoadingDialog();
mPresenter.getDevicesList();
mPresenter.getDevicesList(mCurrentPage);
}
@Override
@@ -136,8 +144,35 @@ public class IndexFragment extends BaseFragment<IndexFragmentLayoutBinding, Inde
* 获取设备列表成功
*/
@Override
public void getDeviceListSuccess() {
public void getDeviceListSuccess(List<IndexDeviceEntity> list,int total) {
hideDialogLoading();
viewBinding.refresh.finishRefresh(300);
viewBinding.refresh.finishLoadMore(300);
if (mCurrentPage == 1) {
devList.clear(); // 只在刷新时清除
devList = list;
} else {
devList.addAll(list);
}
deviceAdapter.setNewData(devList);
// 4. 判断是否还有更多数据
if (total == deviceAdapter.getItemCount() || list == null || list.size() == 0) {
// ✅ 告诉 SmartRefreshLayout 没有更多数据了
viewBinding.refresh.setNoMoreData(true);
viewBinding.relNoMore.setVisibility(View.VISIBLE); // 自定义底部提示“暂无更多数据”
} else {
viewBinding.refresh.setNoMoreData(false); // 重置状态
viewBinding.relNoMore.setVisibility(View.GONE);
}
// 5. 控制空布局和内容显示
if (deviceAdapter.getItemCount() != 0) {
viewBinding.refresh.setVisibility(View.VISIBLE);
viewBinding.relNoresult.setVisibility(View.GONE);
} else {
viewBinding.refresh.setVisibility(View.GONE);
viewBinding.relNoresult.setVisibility(View.VISIBLE);
}
}

View File

@@ -27,10 +27,10 @@ public class DeviceAdapter extends BaseQuickAdapter<IndexDeviceEntity, BaseViewH
@Override
protected void convert(BaseViewHolder holder, IndexDeviceEntity item) {
holder.setText(R.id.tv_device_name,item.getDeviceNames());
holder.setText(R.id.tv_device_serial,item.getDeviceSerials());
holder.setText(R.id.tv_device_status,item.getDeviceStatuses());
holder.setText(R.id.tv_battery_level,item.getBatteryLevels() + "");
holder.setText(R.id.tv_device_name,item.getDeviceName());
holder.setText(R.id.tv_device_serial,item.getDeviceSn());
holder.setText(R.id.tv_device_status,"工作中");
holder.setText(R.id.tv_battery_level,"80");
}

View File

@@ -2,48 +2,44 @@ package com.ckkj.water.index.entity;
import java.io.Serializable;
import lombok.Data;
import lombok.NoArgsConstructor;
@NoArgsConstructor
@Data
public class IndexDeviceEntity implements Serializable {
private String deviceNames;
private String deviceSerials;
private String deviceStatuses;
private int batteryLevels;
public IndexDeviceEntity(String deviceNames, String deviceSerials, String deviceStatuses, int batteryLevels) {
this.deviceNames = deviceNames;
this.deviceSerials = deviceSerials;
this.deviceStatuses = deviceStatuses;
this.batteryLevels = batteryLevels;
}
/**
* id : 2056638783822123010
* deviceNo : 1779175872972
* userId : 2056543507514097665
* deviceName : 50号设备
* deviceImg : null
* status : 0
* powerLevel : null
* powerLevelUpdatatime : null
* wifiName : 橙空科技WiFi
* wifiPassword : 12321212
* deviceEm : 213123123123
* deviceSn : sdfsd32423gdfgdf3
* fwVer : fwVer-56565644
* macAddress : 2E:8H:00:KK:N7
* expirationTime : null
*/
public String getDeviceNames() {
return deviceNames;
}
public void setDeviceNames(String deviceNames) {
this.deviceNames = deviceNames;
}
public String getDeviceSerials() {
return deviceSerials;
}
public void setDeviceSerials(String deviceSerials) {
this.deviceSerials = deviceSerials;
}
public String getDeviceStatuses() {
return deviceStatuses;
}
public void setDeviceStatuses(String deviceStatuses) {
this.deviceStatuses = deviceStatuses;
}
public int getBatteryLevels() {
return batteryLevels;
}
public void setBatteryLevels(int batteryLevels) {
this.batteryLevels = batteryLevels;
}
private String id;
private String deviceNo;
private String userId;
private String deviceName;
private Object deviceImg;
private String status;
private Object powerLevel;
private Object powerLevelUpdatatime;
private String wifiName;
private String wifiPassword;
private String deviceEm;
private String deviceSn;
private String fwVer;
private String macAddress;
private Object expirationTime;
}

View File

@@ -1,11 +1,13 @@
package com.ckkj.water.index.mvp;
import com.ckkj.water.base.IView;
import com.ckkj.water.index.entity.IndexDeviceEntity;
import com.ckkj.water.login.entity.LoginEntity;
import com.ckkj.water.network.BaseBean;
import org.json.JSONObject;
import java.util.List;
import java.util.Map;
/**
@@ -16,7 +18,7 @@ import java.util.Map;
public class IndexContract {
public interface CallBack<T> {
void success(T msg);
void success(T msg,int total);
void fail(String msg);
}
public interface DataModel{
@@ -24,22 +26,9 @@ public class IndexContract {
//获取设备列表
void getDeviceList(Map<String,String> map,CallBack callBack);
//查询设备信息
void getDeviceInfomation(Map<String,String> map,CallBack callBack);
//添加设备
void addDevice(JSONObject json,CallBack callBack);
//修改设备信息
void editDeviceInfo(JSONObject json,CallBack callBack);
//修改设备信息
void deleteDevice(JSONObject json,CallBack callBack);
//手动开启关闭设备
void turnOnOffDevice(JSONObject json,CallBack callBack);
}
public interface IndexView extends IView{
void getDeviceListSuccess();
void getDeviceListSuccess(List<IndexDeviceEntity> list,int total);
}
}

View File

@@ -1,10 +1,12 @@
package com.ckkj.water.index.mvp;
import com.ckkj.water.index.entity.IndexDeviceEntity;
import com.ckkj.water.network.BaseBean;
import com.ckkj.water.network.NetWorkManager;
import org.json.JSONObject;
import java.util.List;
import java.util.Map;
import io.reactivex.Observer;
@@ -26,15 +28,15 @@ public class IndexImpl implements IndexContract.DataModel{
.subscribeOn(Schedulers.io())
.unsubscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<BaseBean>() {
.subscribe(new Observer<BaseBean<List<IndexDeviceEntity>>>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
}
@Override
public void onNext(@NonNull BaseBean bean) {
public void onNext(@NonNull BaseBean<List<IndexDeviceEntity>> bean) {
if (bean.getCode() == 200) {
callBack.success(bean.getData());
callBack.success(bean.getRows(),bean.getTotal());
}
}
@@ -49,28 +51,4 @@ public class IndexImpl implements IndexContract.DataModel{
});
}
@Override
public void getDeviceInfomation(Map<String, String> map, IndexContract.CallBack callBack) {
}
@Override
public void addDevice(JSONObject json, IndexContract.CallBack callBack) {
}
@Override
public void editDeviceInfo(JSONObject json, IndexContract.CallBack callBack) {
}
@Override
public void deleteDevice(JSONObject json, IndexContract.CallBack callBack) {
}
@Override
public void turnOnOffDevice(JSONObject json, IndexContract.CallBack callBack) {
}
}

View File

@@ -1,10 +1,10 @@
package com.ckkj.water.index.mvp;
import com.ckkj.water.base.BasePresenter;
import com.ckkj.water.login.mvp.LoginImpl;
import com.ckkj.water.network.BaseBean;
import com.ckkj.water.index.entity.IndexDeviceEntity;
import java.util.HashMap;
import java.util.List;
public class IndexPresenter extends BasePresenter<IndexContract.IndexView>{
@@ -17,12 +17,13 @@ public class IndexPresenter extends BasePresenter<IndexContract.IndexView>{
/**
* 查询设备列表
*/
public void getDevicesList() {
mImpl.getDeviceList(new HashMap<>(), new IndexContract.CallBack<BaseBean>() {
public void getDevicesList(int mCurrentPage) {
mImpl.getDeviceList(new HashMap<>(), new IndexContract.CallBack<List<IndexDeviceEntity>>() {
@Override
public void success(BaseBean bean) {
public void success(List<IndexDeviceEntity> list, int total) {
if(IndexPresenter.this.getView() != null){
IndexPresenter.this.getView().getDeviceListSuccess();
IndexPresenter.this.getView().getDeviceListSuccess(list,total);
}
}

View File

@@ -105,7 +105,7 @@ public class MainActivity extends BaseActivity<MainActivityLayoutBinding, MainPr
@Override
public void initData(Bundle savedInstanceState) {
super.initData(savedInstanceState);
mPresenter.checkNewVersion();
// mPresenter.checkNewVersion();
// 清空Fragment列表避免状态恢复问题
mFragmentList.clear();
mFragmentList.add(new IndexFragment());

View File

@@ -20,6 +20,8 @@ public class BaseBean<T> implements Serializable {
private String msg;
private int code;
private T data;
private T rows;
private int pages;
private int total;
private int size;
@@ -47,6 +49,10 @@ public class BaseBean<T> implements Serializable {
this.code = code;
}
public T getRows() {
return rows;
}
public T getData() {
return data;
}

View File

@@ -3,6 +3,7 @@ package com.ckkj.water.network;
import com.ckkj.water.base.entity.MineUserInfoBean;
import com.ckkj.water.index.entity.IndexDeviceEntity;
import com.ckkj.water.login.entity.LoginEntity;
import com.ckkj.water.main.entity.CheckVersionEntity;
import com.ckkj.water.plate.entity.BaziResultBean;
@@ -41,7 +42,10 @@ public interface Request {
//首页设备列表
@GET("app/v1/deviceList")
Observable<BaseBean> getIndexDeviceList(@HeaderMap Map<String, String> headMap);
Observable<BaseBean<List<IndexDeviceEntity>>> getIndexDeviceList(@HeaderMap Map<String, String> headMap);
//添加设备
@POST("app/v1/addDevice")
Observable<BaseBean> addDevice(@HeaderMap Map<String, String> headMap, @Body RequestBody requestBody);

View File

@@ -82,4 +82,39 @@ public class ActivityManager {
}
}
}
/**
* 关闭指定tag的所有Activity
*
* @param tag 比如 add_device_flag
*/
public static void removeActivityByTag(String tag)
{
if(activitys == null || activitys.isEmpty()){
return;
}
//避免遍历时ConcurrentModificationException
Map<String, Activity> tempMap =
new HashMap<>(activitys);
for (Map.Entry<String, Activity> entry : tempMap.entrySet()) {
String key = entry.getKey();
Activity activity = entry.getValue();
if (key != null && key.contains(tag)) {
if (activity != null &&
!activity.isFinishing() &&
!activity.isDestroyed()) {
activity.finish();
}
activitys.remove(key);
}
}
}
}

View File

@@ -10,9 +10,9 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="@dimen/dp_5"
android:layout_marginVertical="@dimen/dp_5"
android:layout_marginVertical="@dimen/dp_6"
app:cardCornerRadius="16dp"
app:cardElevation="4dp">
app:cardElevation="@dimen/dp_5">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"

View File

@@ -80,6 +80,15 @@
android:textStyle="bold" />
<com.scwang.smart.refresh.layout.SmartRefreshLayout
android:id="@+id/refresh"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<!-- 设备列表区域 -->
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_devices"
@@ -88,11 +97,31 @@
android:layout_weight="1"
android:clipToPadding="false"
android:paddingHorizontal="@dimen/dp_15"
android:paddingTop="@dimen/dp_15"
android:paddingBottom="@dimen/dp_20"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
tools:listitem="@layout/index_device_list_item" />
<RelativeLayout
android:id="@+id/rel_no_more"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:visibility="gone" >
<include
android:id="@+id/lay_no_more"
layout="@layout/layout_no_more"/>
</RelativeLayout>
</LinearLayout>
</com.scwang.smart.refresh.layout.SmartRefreshLayout>
<RelativeLayout
android:id="@+id/rel_noresult"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="gone">
<include
android:id="@+id/included_noresult"
layout="@layout/include_no_result_layout"/>
</RelativeLayout>
</LinearLayout>
</FrameLayout>

View File

@@ -7,5 +7,5 @@
android:id="@+id/ivRefresh"
android:layout_width="30dp"
android:layout_height="30dp"
android:src="@mipmap/icon_refresh_logo" />
android:src="@mipmap/ic_launcher" />
</RelativeLayout>