using System;
|
using System.Collections.Generic;
|
using Com.Hdl.Widget.Pickerview.Builder;
|
using Com.Hdl.Widget.Pickerview.Listener;
|
using Android.Content;
|
|
namespace Shared
|
{
|
public class PickerView
|
{
|
//public static void Show(List<KeyValuePair<string, string[]>> list, Action<string> action, string sure = "Sure", string beforeValue = "")
|
//{
|
// if (list == null) {
|
// return;
|
// }
|
// var pv = new Shared.Droid.TCL.PickerView();
|
// pv.Show(Application.Activity, list, (obj) => {
|
// action?.Invoke(obj);
|
// });
|
//}
|
|
|
|
/// <summary>
|
/// 一级数组弹窗 支持设置默认选中索引,自定义标题,确认按钮,取消按钮字符
|
/// </summary>
|
public static void Show(List<string> mList, Action<int> action, int mSelectIndex1 = 0, string title = "", string sure = "确认", string cancel = "取消")
|
{
|
if (mList == null)
|
{
|
return;
|
}
|
|
|
|
var mOptionsPickerBuilder = new OptionsPickerBuilder(Application.Activity, new OnOptionsSelectListenerCallBack(action))
|
.SetTitleText(title)
|
.SetSubmitText(sure)
|
.SetCancelText(cancel)
|
.SetContentTextSize(20)//设置滚轮文字大小
|
.SetSelectOptions(mSelectIndex1)
|
//.SetDividerColor(BLACK)//设置分割线的颜色
|
//.SetSelectOptions(0, 1)//默认选中项
|
//.SetBgColor(BLACK)
|
//.SetTitleBgColor(BLACK)
|
//.SetTitleColor(BLACK)
|
//.SetCancelColor(BLACK)
|
//.SetSubmitColor(BLACK)
|
//.SetTextColorCenter(BLACK)
|
.IsRestoreItem(true)//切换时是否还原,设置默认选中第一项。
|
.IsCenterLabel(false) //是否只显示中间选中项的label文字,false则每项item全部都带有label。
|
//.SetLabels("省", "市", "区")
|
.SetOutSideColor(HDLUtils.GetUIColorWithUint(0x80000000)) //设置外部遮罩颜色
|
.Build();
|
|
mOptionsPickerBuilder.SetPicker(mList);
|
mOptionsPickerBuilder.Show();
|
|
|
}
|
|
|
|
private static string SPLIT_FLAG = ">-<";
|
|
/// <summary>
|
/// 二级联动弹窗 支持设置默认选中索引,自定义标题,确认按钮,取消按钮字符
|
/// </summary>
|
public static void ShowSecondary(List<string> mFirstList, List<List<string>> mSecondList, Action<int, int> action, int mSelectIndex1 = 0, int mSelectIndex2 = 0, string title = "", string sure = "确认", string cancel = "取消")
|
{
|
if (mFirstList == null)
|
{
|
return;
|
}
|
|
if (mFirstList.Count != mSecondList.Count)
|
{
|
|
return;
|
}
|
|
var mSpliceList = new List<string>();//拼接后的数组
|
for (int i = 0; i < mSecondList.Count; i++)
|
{
|
string mDataStr = "";
|
for (int j = 0; j < mSecondList[i].Count; j++)
|
{
|
mDataStr += mSecondList[i][j] + SPLIT_FLAG;
|
}
|
mSpliceList.Add(mDataStr);
|
|
}
|
|
var mOptionsPickerBuilder = new OptionsPickerBuilder(Application.Activity, new OnSecondaryOptionsSelectListenerCallBack(action))
|
.SetTitleText(title)
|
.SetSubmitText(sure)
|
.SetCancelText(cancel)
|
.SetContentTextSize(20)//设置滚轮文字大小
|
.SetSelectOptions(mSelectIndex1, mSelectIndex2)
|
//.SetDividerColor(BLACK)//设置分割线的颜色
|
//.SetSelectOptions(0, 1)//默认选中项
|
//.SetBgColor(BLACK)
|
//.SetTitleBgColor(BLACK)
|
//.SetTitleColor(BLACK)
|
//.SetCancelColor(BLACK)
|
//.SetSubmitColor(BLACK)
|
//.SetTextColorCenter(BLACK)
|
.IsRestoreItem(true)//切换时是否还原,设置默认选中第一项。
|
.IsCenterLabel(false) //是否只显示中间选中项的label文字,false则每项item全部都带有label。
|
//.SetLabels("省", "市", "区")
|
.SetOutSideColor(0x00000000) //设置外部遮罩颜色
|
.Build();
|
|
|
mOptionsPickerBuilder.SetPickerString(mFirstList, mSpliceList);
|
mOptionsPickerBuilder.Show();
|
}
|
|
|
|
/// <summary>
|
/// 不联动支持自定义标题,确认按钮,取消按钮文字
|
/// </summary>
|
public static void ShowNormal(List<string> mFirstList, List<string> mSecondList, List<string> mThirdList, Action<int, int, int> action, int mSelectIndex1 = 0, int mSelectIndex2 = 0, int mSelectIndex3 = 0, string title = "", string sure = "确认", string cancel = "取消")
|
{
|
if (mFirstList == null)
|
{
|
return;
|
}
|
|
if (mSecondList == null)
|
{
|
return;
|
}
|
|
|
|
|
var mOptionsPickerBuilder = new OptionsPickerBuilder(Application.Activity, new OnOptionsSelectListenerCallBack3(action))
|
.SetTitleText(title)
|
.SetSubmitText(sure)
|
.SetCancelText(cancel)
|
.SetContentTextSize(20)//设置滚轮文字大小
|
.SetSelectOptions(mSelectIndex1, mSelectIndex2, mSelectIndex3)
|
//.SetDividerColor(BLACK)//设置分割线的颜色
|
//.SetSelectOptions(0, 1)//默认选中项
|
//.SetBgColor(BLACK)
|
//.SetTitleBgColor(BLACK)
|
//.SetTitleColor(BLACK)
|
//.SetCancelColor(BLACK)
|
//.SetSubmitColor(BLACK)
|
//.SetTextColorCenter(BLACK)
|
.IsRestoreItem(true)//切换时是否还原,设置默认选中第一项。
|
.IsCenterLabel(false) //是否只显示中间选中项的label文字,false则每项item全部都带有label。
|
//.SetLabels("省", "市", "区")
|
.SetOutSideColor(0x00000000) //设置外部遮罩颜色
|
.Build();
|
|
|
mOptionsPickerBuilder.SetNPicker(mFirstList, mSecondList, mThirdList);
|
mOptionsPickerBuilder.Show();
|
|
|
|
}
|
|
|
|
|
|
|
|
|
/// <summary>
|
/// 一级回调事件
|
/// </summary>
|
public class OnOptionsSelectListenerCallBack : Java.Lang.Object, IOnOptionsSelectListener
|
{
|
|
Action<int> mAction;
|
|
public OnOptionsSelectListenerCallBack(Action<int> action)
|
{
|
mAction = action;
|
}
|
|
public void OnOptionsSelect(int selectIndex1, int selectIndex2, int selectIndex3, Android.Views.View p3)
|
{
|
//Shared.HDLUtils.WriteLine("OnOptionsSelect: selectIndex1:" + selectIndex1 + " selectIndex2:" + selectIndex2);
|
mAction?.Invoke(selectIndex1);
|
}
|
}
|
|
|
/// <summary>
|
/// 二级联动回调事件
|
/// </summary>
|
public class OnSecondaryOptionsSelectListenerCallBack : Java.Lang.Object, IOnOptionsSelectListener
|
{
|
|
|
Action<int, int> mActionSecondary;
|
public OnSecondaryOptionsSelectListenerCallBack(Action<int, int> action)
|
{
|
mActionSecondary = action;
|
}
|
|
public void OnOptionsSelect(int selectIndex1, int selectIndex2, int selectIndex3, Android.Views.View p3)
|
{
|
//Shared.HDLUtils.WriteLine("OnOptionsSelect: selectIndex1:" + selectIndex1 + " selectIndex2:" + selectIndex2);
|
mActionSecondary?.Invoke(selectIndex1, selectIndex2);
|
}
|
}
|
|
|
|
/// <summary>
|
/// 三级回调事件
|
/// </summary>
|
public class OnOptionsSelectListenerCallBack3 : Java.Lang.Object, IOnOptionsSelectListener
|
{
|
|
Action<int, int , int> mAction;
|
|
public OnOptionsSelectListenerCallBack3(Action<int, int, int> action)
|
{
|
mAction = action;
|
}
|
|
public void OnOptionsSelect(int selectIndex1, int selectIndex2, int selectIndex3, Android.Views.View p3)
|
{
|
//Shared.HDLUtils.WriteLine("OnOptionsSelect: selectIndex1:" + selectIndex1 + " selectIndex2:" + selectIndex2);
|
mAction?.Invoke(selectIndex1, selectIndex2, selectIndex3);
|
}
|
}
|
}
|
|
}
|