Android开发中,参数判空失败

Android开发中,参数判空失败

参数判空

在Android开发过程中,我们肯定会需要接收服务端传过来的参数,以及别的页面和其他情况下传过来的参数,开发需求需要对其进行判空操作,有时候你会发现,你判空操作没效果,这是为什么呢?首先来看下面的判空操作:

     if (bean.getImageList() == null) {
            rvImageShow.setVisibility(View.GONE);
            goneView2.setVisibility(View.GONE);
        } else {
            rvImageShow.setVisibility(View.VISIBLE);
            iamgeAdapter.setImageList(bean.getImageList());
        }

上面这段代码就是从服务端获取一个参数然后进行判空,如果判空就隐藏某个视图,如果不为空就显示那个视图,你是不是觉得上面的写法木有问题???
如果是,那恭喜你,你太菜了·!!!
上面的判空存在一个问题,那就是你虽然判断了获取的list是否为空,但是如果list中的参数就是空参,没有值的,那么list此时就不是空list了,那么代码执行的时候就会直接显示else中语句,所以上面的写法是不正确的,正确的写法如下:

if (bean.getImageList() == null || bean.getImageList().size() == 0) {
            rvImageShow.setVisibility(View.GONE);
            goneView2.setVisibility(View.GONE);
        } else {
            rvImageShow.setVisibility(View.VISIBLE);
            iamgeAdapter.setImageList(bean.getImageList());
        }

第二种判空情况

直接上代码,你肯定懂这个逻辑,但是下面代码有问题,你知道是为什么吗?

if (bean.getBarCode()!=null) {
            tvGoodsCode.setText("条码:" + bean.getBarCode());
        } else {
            tvGoodsCode.setVisibility(View.GONE);
        }

其实这个问题和上面问题一样的,正确的写法如下:

if (!TextUtils.isEmpty(bean.getBarCode())) {
            tvGoodsCode.setText("条码:" + bean.getBarCode());
        } else {
            tvGoodsCode.setVisibility(View.GONE);
        }

你可以打开TextUtils.isEmpty()这个方法,这个方法中会告诉why之前那个是错误的

 public static boolean isEmpty(@Nullable CharSequence str) {
        return str == null || str.length() == 0;
    }

看到这里,我相信你应该已经懂了。

总结

在开发过程中,需要对参数判空时,不能直接写(xx==null)这样的写法是错误,你需要考虑到参数可能就是个空参数,所以在判空的时候不能只写null还需要进一步判断。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android开发,onConnectionStateChange是BluetoothGattCallback回调函数的一个方法。它是在低功耗蓝牙连接状态发生改变时被回调的。 该方法有三个参数:BluetoothGatt对象、连接状态以及连接状态改变的原因。其,BluetoothGatt对象表示连接的设备,连接状态有两种:BluetoothProfile.STATE_CONNECTED和BluetoothProfile.STATE_DISCONNECTED,分别表示已连接和已断开连接。连接状态改变的原因包括:BluetoothGatt.GATT_SUCCESS、BluetoothGatt.GATT_FAILURE和BluetoothGatt.GATT_CONNECTION_CONGESTED等,分别表示连接成功、连接失败和连接拥塞等。 当连接状态发生改变时,onConnectionStateChange方法会被系统回调,并且会传递以上三个参数开发人员可以在该方法进行连接状态的判断和处理,比如在连接成功时进行服务发现,在连接断开时进行重新连接等操作。 onConnectionStateChange方法的代码实现如下: ``` private final BluetoothGattCallback mGattCallback = new BluetoothGattCallback() { @Override public void onConnectionStateChange(BluetoothGatt gatt, int status, int newState) { if (newState == BluetoothProfile.STATE_CONNECTED) { //已连接,进行服务发现等操作 gatt.discoverServices(); } else if (newState == BluetoothProfile.STATE_DISCONNECTED) { //已断开连接 //进行重新连接等操作 } } }; ``` 因此,onConnectionStateChange是开发低功耗蓝牙时非常重要的一个回调函数,可以帮助开发人员进行连接状态的判断和处理,从而实现更加稳定和可靠的蓝牙通信。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值