private void Invalidate()
        {
            nameView.Text = device.serialNumber.deviceModel.GetTypeString() + ": " + device.serialNumber;
            iconView.SetImageResource(device.GetDeviceIcon());

            if (device.connection.connectionState == EConnectionState.Resolving || device.connection.connectionState == EConnectionState.Connecting)
            {
                progressView.Visibility        = ViewStates.Visible;
                connectionStateView.Visibility = ViewStates.Gone;
            }
            else
            {
                progressView.Visibility        = ViewStates.Gone;
                connectionStateView.Visibility = ViewStates.Visible;

                if (lastConnectionState != device.connection.connectionState)
                {
                    switch (device.connection.connectionState)
                    {
                    case EConnectionState.Connected:
                        connectionStateView.SetImageResource(Resource.Drawable.ic_bluetooth_connected);
                        connectionStateView.SetBackgroundResource(Resource.Drawable.xml_rect_green_black_bordered_round);
                        break;

                    case EConnectionState.Broadcasting:
                        connectionStateView.SetImageResource(Resource.Drawable.ic_bluetooth_broadcast);
                        connectionStateView.SetBackgroundResource(Resource.Drawable.xml_rect_light_blue_black_bordered_round);
                        break;

                    default:
                        if (device.isNearby)
                        {
                            connectionStateView.SetImageResource(Resource.Drawable.ic_bluetooth_disconnected);
                            connectionStateView.SetBackgroundResource(Resource.Drawable.xml_rect_yellow_black_bordered_round);
                        }
                        else
                        {
                            connectionStateView.SetImageResource(Resource.Drawable.ic_bluetooth_disconnected);
                            connectionStateView.SetBackgroundResource(Resource.Drawable.xml_rect_red_black_bordered_round);
                        }
                        break;
                    }

                    lastConnectionState = device.connection.connectionState;
                }
            }

            if (device.isConnected || device.connection.connectionState == EConnectionState.Broadcasting)
            {
                batteryView.Visibility = ViewStates.Visible;
                if (lastBatteryLevel != device.battery)
                {
                    batteryView.SetImageResource(device.GetBatteryIconVert());
                    lastBatteryLevel = device.battery;
                }
            }
            else
            {
                batteryView.Visibility = ViewStates.Invisible;
            }

            InvalidateSensor(device.sensors[0], sensor1ContainerView);
            if (device.sensorCount >= 2)
            {
                InvalidateSensor(device.sensors[1], sensor2ContainerView);
            }
            else
            {
                divider.Visibility = ViewStates.Invisible;
                sensor2ContainerView.Visibility = ViewStates.Gone;
            }
        }