public void UpdateNDEFMessage(NDEFMessage message)
        {
            CleanupRecordItems();

            float             y       = 0;
            List <NDEFRecord> records = message.Records;

            int length = records.Count;

            for (int i = 0; i < length; i++)
            {
                NDEFRecord record     = records[i];
                RecordItem recordItem = null;
                switch (record.Type)
                {
                case NDEFRecordType.TEXT:
                    recordItem = CreateRecordItem(textRecordItemPrefab);
                    TextRecord textRecord = (TextRecord)record;
                    recordItem.UpdateLabel(string.Format(TEXT_RECORD_FORMAT, NDEFRecordType.TEXT, textRecord.text, textRecord.languageCode, textRecord.textEncoding));
                    tagInfoContentLabel.text = string.Format(TEXT_RECORD_FORMAT, NDEFRecordType.TEXT, textRecord.text, textRecord.languageCode, textRecord.textEncoding);
                    //infosSenderText.text = textRecord.text;
                    senderController.SendValue(textRecord.text);
                    break;

                case NDEFRecordType.URI:
                    recordItem = CreateRecordItem(uriRecordItemPrefab);
                    UriRecord uriRecord = (UriRecord)record;
                    recordItem.UpdateLabel(string.Format(URI_RECORD_FORMAT, NDEFRecordType.URI, uriRecord.fullUri, uriRecord.uri, uriRecord.protocol));
                    break;

                case NDEFRecordType.MIME_MEDIA:
                    recordItem = CreateRecordItem(mimeMediaRecordItemPrefab);
                    MimeMediaRecord mimeMediaRecord = (MimeMediaRecord)record;
                    recordItem.UpdateLabel(string.Format(MIME_MEDIA_RECORD_FORMAT, NDEFRecordType.MIME_MEDIA, mimeMediaRecord.mimeType));
                    ((ImageRecordItem)recordItem).LoadImage(mimeMediaRecord.mimeData);
                    break;

                case NDEFRecordType.EXTERNAL_TYPE:
                    recordItem = CreateRecordItem(externalTypeRecordItemPrefab);
                    ExternalTypeRecord externalTypeRecord = (ExternalTypeRecord)record;
                    int    dataLength = externalTypeRecord.domainData.Length;
                    string dataValue  = Encoding.UTF8.GetString(externalTypeRecord.domainData);
                    recordItem.UpdateLabel(string.Format(EXTERNAL_TYPE_FORMAT, NDEFRecordType.EXTERNAL_TYPE, externalTypeRecord.domainName, externalTypeRecord.domainType, dataLength, dataValue));
                    break;

                case NDEFRecordType.SMART_POSTER:
                    recordItem = CreateRecordItem(smartPosterRecordItemPrefab);
                    SmartPosterRecord smartPosterRecord = (SmartPosterRecord)record;
                    int totalRecords = smartPosterRecord.titleRecords.Count + smartPosterRecord.iconRecords.Count + smartPosterRecord.extraRecords.Count;
                    recordItem.UpdateLabel(string.Format(SMART_POSTER_RECORD_FORMAT, NDEFRecordType.SMART_POSTER, smartPosterRecord.uriRecord.fullUri, smartPosterRecord.action, smartPosterRecord.size, smartPosterRecord.mimeType, totalRecords));
                    break;
                }

                recordItem.RectTransform.anchoredPosition = new Vector2(0, y);
                y -= recordItem.RectTransform.rect.height;
                y -= Y_SPACING;
            }

            ndefMessageScrollRect.content.sizeDelta = new Vector2(0, Mathf.Abs(y));
        }
        public void OnAddRecordClick()
        {
            if (pendingMessage == null)
            {
                pendingMessage = new NDEFMessage();
            }

            NDEFRecord     record = null;
            string         value  = view.TypeDropdown.options[view.TypeDropdown.value].text;
            NDEFRecordType type   = (NDEFRecordType)Enum.Parse(typeof(NDEFRecordType), value);

            switch (type)
            {
            case NDEFRecordType.TEXT:
                string text         = view.TextInput.text;
                string languageCode = view.LanguageCodeInput.text;
                if (languageCode.Length != 2)
                {
                    languageCode = "en";
                }
                TextRecord.TextEncoding textEncoding = (TextRecord.TextEncoding)view.TextEncodingDropdown.value;
                record = new TextRecord(text, languageCode, textEncoding);
                break;

            case NDEFRecordType.URI:
                string uri = view.UriInput.text;
                record = new UriRecord(uri);
                break;

            case NDEFRecordType.MIME_MEDIA:
                string mimeType = "image/png";                         //We're only using png images atm
                IconID iconID   = (IconID)view.IconDropdown.value;
                byte[] mimeData = GetIconBytes(iconID);
                record = new MimeMediaRecord(mimeType, mimeData);
                break;

            case NDEFRecordType.EXTERNAL_TYPE:
                string domainName       = view.DomainNameInput.text;
                string domainType       = view.DomainTypeInput.text;
                string domainDataString = view.DomainDataInput.text;
                byte[] domainData       = Encoding.UTF8.GetBytes(domainDataString);                   //Data represents a string in this example
                record = new ExternalTypeRecord(domainName, domainType, domainData);
                break;
            }

            pendingMessage.Records.Add(record);

            view.UpdateNDEFMessage(pendingMessage);
        }