using System; using HDL_ON.UI.UI2.Intelligence.Automation.LogicView; using Shared; using System.Collections.Generic; using System.Text; namespace HDL_ON.UI.UI2.PersonalCenter.PirDevice.View { public class BrandListView : FrameLayout { /// /// /// /// 表示该列表元素A-Z字母筛选显示出来 /// 表示该列表元素显示在list前面(该列表元素不做A-Z字母筛选),没有可以为list6=null /// 返回选中文本 public void Show(List list, List list6, Action action) { //string text = "30"; //byte[] bytes = new byte[text.Length / 2]; //for (int i = 0, j = 0; i < bytes.Length; j += 2, i++) //{ // //把16进度转换成byte // bytes[i] = Convert.ToByte(text.Substring(j, 2), 16); //} ////把byte数组转换成文字 //string str = System.Text.Encoding.UTF8.GetString(bytes); var frameLayout = new FrameLayout { BackgroundColor = CSS.CSS_Color.viewTop, Height = Application.GetRealHeight(112), Width = Application.GetRealWidth(375), }; this.AddChidren(frameLayout); var topNameBtn = new Button { TextSize = TextSize.text18, TextColor = CSS.CSS_Color.textColor, Width = Application.GetRealWidth(TextSize.view375 - 60 - 60), Height = Application.GetRealHeight(25), Y = Application.GetRealHeight(30), X = Application.GetRealWidth(60), Text = "请选择品牌", }; frameLayout.AddChidren(topNameBtn); var backBtn = new Button { Width = Application.GetRealWidth(12), Height = Application.GetRealWidth(20), X = Application.GetRealWidth(TextSize.left16), Y = Application.GetRealHeight(32), UnSelectedImagePath = "LogicIcon/back.png", }; frameLayout.AddChidren(backBtn); var clickBackBtn = new Button { Width = Application.GetRealWidth(12 + 16 + 20), Height = Application.GetRealWidth(20 + 20), Y = Application.GetRealHeight(32), }; frameLayout.AddChidren(clickBackBtn); clickBackBtn.MouseUpEventHandler += (sen, e) => { this.RemoveFromParent(); }; var editText = new EditText { Width = Application.GetRealWidth(343), Height = Application.GetRealWidth(28), X = Application.GetRealWidth(TextSize.left16), Y = Application.GetRealHeight(76), BackgroundColor = CSS.CSS_Color.view, TextColor = CSS.CSS_Color.textColor, TextAlignment = TextAlignment.Center, }; frameLayout.AddChidren(editText); var fram = new FrameLayout { Y = Application.GetRealHeight(112), Height = Application.GetRealHeight(667 - 112), Width = Application.GetRealWidth(375), BackgroundColor = CSS.CSS_Color.view, }; this.AddChidren(fram); if (list == null) { list = new List(); } if (list6 == null) { list6 = new List(); } var list1 = GetDateList(list); list1.InsertRange(0, list6); var vv = new VerticalScrolViewLayout(); fram.AddChidren(vv); var listStr = new List(); listStr.AddRange(list1); editText.TextChangeEventHandler += (view, strView) => { listStr.Clear(); for (int i = 0; i < list1.Count; i++) { var s = list1[i]; if (s.Contains(strView)) { listStr.Add(s); } } RefreshLayout(vv, listStr, action); }; #region A-Z var a_zFra = new FrameLayout { Y = Application.GetRealHeight(46), X = Application.GetRealWidth(362 - 6), Height = Application.GetRealHeight(351), Width = Application.GetRealWidth(10 + 6), }; fram.AddChidren(a_zFra); var list2 = GetList(); for (int i = 0; i < list2.Count; i++) { var a_zBtn = new Button { Padding = new Padding(0, 6, 0, 0), Y = Application.GetRealHeight(i * 13), Width = Application.GetRealWidth(16), Height = Application.GetRealHeight(10), Text = list2[i], TextSize = TextSize.text10, TextColor = CSS.CSS_Color.textConfirmColor, Tag = list2[i], }; a_zFra.AddChidren(a_zBtn); a_zBtn.MouseUpEventHandler += (sender, e) => { try { //找到索引值 var index = listStr.IndexOf(a_zBtn.Tag.ToString()); if (index != -1) { vv.ScrollToViewIndex(index); } else { if (a_zBtn.Tag.ToString() == "#") { vv.ScrollToViewIndex(0); } } } catch { } }; } #endregion RefreshLayout(vv, list1, action); } /// /// 更新列表Viev /// /// 父控件 /// 显示列表 private void RefreshLayout(VerticalScrolViewLayout vv, List list, Action action) { vv.RemoveAll(); foreach (var str in list) { var rowLayout = new RowLayout { LineColor = CSS.CSS_Color.view }; var textName = new Button { TextSize = TextSize.text16, TextColor = CSS.CSS_Color.textColor, Width = Application.GetRealWidth(300), Height = Application.GetRealHeight(22), X = Application.GetRealWidth(16), Gravity = Gravity.CenterVertical, TextAlignment = TextAlignment.CenterLeft, Text = str, }; var clickBtn = new Button { Tag = str, Width = Application.GetRealWidth(350), }; if (Exist(str)) { //因为字母没有点击事件 rowLayout.Height = Application.GetRealHeight(24); rowLayout.BackgroundColor = CSS.CSS_Color.viewTop; textName.TextSize = TextSize.text12; rowLayout.AddChidren(textName); } else { rowLayout.Height = Application.GetRealHeight(44); rowLayout.AddChidren(textName); rowLayout.AddChidren(clickBtn); } vv.AddChidren(rowLayout); clickBtn.MouseUpEventHandler += (sen, e) => { //找到索引值 //var index = list.IndexOf(); action(clickBtn.Tag.ToString()); this.RemoveFromParent(); }; } } /// /// 列表是否包含该值(true=包含,false=不包含) /// /// /// private bool Exist(string str) { if (GetList().Contains(str) || "主流品牌" == str) { return true; } else { return false; } } /// /// 获取显示列表 /// /// private List GetDateList(List mList) { var list = new List(); //获取A-Z字母列表 var a_zList = GetList(false); //遍历A-Z字母列表 for (int i = 0; i < a_zList.Count; i++) { var zimu = a_zList[i]; //遍历字符串列表 for (int a = 0; a < mList.Count; a++) { var str = mList[a]; //提取字符串第一位 string s = str.Substring(0, 1); //返回字符串第一位首字母(大写) var a_z = GetCharSpellCode(s); //判断是否同字母 if (zimu == a_z) { //判断列表是否存在字母 if (!list.Contains(zimu)) { //添加字母 list.Add(zimu); } //添加首字同一个字母的数据 list.Add(str); } } } return list; } /// /// 获取A-Z字母列表 /// /// private List GetList(bool value = true) { var list = new List(); if (value) { list.Add("#"); } for (int j = 65; j <= 90; j++) { char c = (char)j; string s = c.ToString(); list.Add(s); } return list; } /// /// 获取汉字首字母 /// /// /// private string GetCharSpellCode(string textValue) { long iCnChar; byte[] ZW = Encoding.GetEncoding("gb2312").GetBytes(textValue); //如果是字母,则直接返回 if (ZW.Length == 1) { return textValue.ToUpper(); } else { // get the array of byte from the single char int i1 = (short)(ZW[0]); int i2 = (short)(ZW[1]); iCnChar = i1 * 256 + i2; } //expresstion //table of the constant list // 'A'; //45217..45252 // 'B'; //45253..45760 // 'C'; //45761..46317 // 'D'; //46318..46825 // 'E'; //46826..47009 // 'F'; //47010..47296 // 'G'; //47297..47613 // 'H'; //47614..48118 // 'J'; //48119..49061 // 'K'; //49062..49323 // 'L'; //49324..49895 // 'M'; //49896..50370 // 'N'; //50371..50613 // 'O'; //50614..50621 // 'P'; //50622..50905 // 'Q'; //50906..51386 // 'R'; //51387..51445 // 'S'; //51446..52217 // 'T'; //52218..52697 //没有U,V // 'W'; //52698..52979 // 'X'; //52980..53640 // 'Y'; //53689..54480 // 'Z'; //54481..55289 // iCnChar match the constant if ((iCnChar >= 45217) && (iCnChar <= 45252)) { return "A"; } else if ((iCnChar >= 45253) && (iCnChar <= 45760)) { return "B"; } else if ((iCnChar >= 45761) && (iCnChar <= 46317)) { return "C"; } else if ((iCnChar >= 46318) && (iCnChar <= 46825)) { return "D"; } else if ((iCnChar >= 46826) && (iCnChar <= 47009)) { return "E"; } else if ((iCnChar >= 47010) && (iCnChar <= 47296)) { return "F"; } else if ((iCnChar >= 47297) && (iCnChar <= 47613)) { return "G"; } else if ((iCnChar >= 47614) && (iCnChar <= 48118)) { return "H"; } else if ((iCnChar >= 48119) && (iCnChar <= 49061)) { return "J"; } else if ((iCnChar >= 49062) && (iCnChar <= 49323)) { return "K"; } else if ((iCnChar >= 49324) && (iCnChar <= 49895)) { return "L"; } else if ((iCnChar >= 49896) && (iCnChar <= 50370)) { return "M"; } else if ((iCnChar >= 50371) && (iCnChar <= 50613)) { return "N"; } else if ((iCnChar >= 50614) && (iCnChar <= 50621)) { return "O"; } else if ((iCnChar >= 50622) && (iCnChar <= 50905)) { return "P"; } else if ((iCnChar >= 50906) && (iCnChar <= 51386)) { return "Q"; } else if ((iCnChar >= 51387) && (iCnChar <= 51445)) { return "R"; } else if ((iCnChar >= 51446) && (iCnChar <= 52217)) { return "S"; } else if ((iCnChar >= 52218) && (iCnChar <= 52697)) { return "T"; } else if ((iCnChar >= 52698) && (iCnChar <= 52979)) { return "W"; } else if ((iCnChar >= 52980) && (iCnChar <= 53640)) { return "X"; } else if ((iCnChar >= 53689) && (iCnChar <= 54480)) { return "Y"; } else if ((iCnChar >= 54481) && (iCnChar <= 55289)) { return "Z"; } else return ("ZZ"); } } }