首页设备列表,添加设备

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

@@ -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);
}
}