如何从ListView自定义适配器中的微调器获取所有值
我试图在ListView中创建一个微调器,但我不知道如何获取字符串列表中每个微调器的所有值。这是适配器的代码:如何从ListView自定义适配器中的微调器获取所有值,listview,custom-controls,spinner,xamarin.android,Listview,Custom Controls,Spinner,Xamarin.android,我试图在ListView中创建一个微调器,但我不知道如何获取字符串列表中每个微调器的所有值。这是适配器的代码: public class CustomizeColumnsListAdapter : BaseAdapter { private Activity context; private int columnsCount; public List<string> fieldsValues; public CustomizeColumnsListA
public class CustomizeColumnsListAdapter : BaseAdapter
{
private Activity context;
private int columnsCount;
public List<string> fieldsValues;
public CustomizeColumnsListAdapter(Activity context, int columnsCount)
{
this.context = context;
this.dataObject = dataObject;
this.columnsCount = columnsCount;
}
public override View GetView(int position, View convertView, ViewGroup parent)
{
RelativeLayout view = (convertView
?? context.LayoutInflater.Inflate(
Resource.Layout.customize_column_list_item, parent, false)
) as RelativeLayout;
try
{
string[] sortingColumsItems = {"None", "Id", "Customer Name", "Customer Number", "City", "Address", "Credit Limit", "Contact Name", "Phone Number", "Mail"};
ArrayAdapter<string> spinnerArrayAdapter = new ArrayAdapter<string>(context, Android.Resource.Layout.SimpleSpinnerItem, sortingColumsItems);
spinnerArrayAdapter.SetDropDownViewResource(Android.Resource.Layout.SimpleSpinnerDropDownItem);
view.FindViewById<Spinner>(Resource.Id.cboCCD).Adapter = spinnerArrayAdapter;
view.FindViewById<Spinner>(Resource.Id.cboCCD).Enabled = true;
if(columnsCount>=position)
{
string columnIndex = (position + 1).ToString();
view.FindViewById<TextView>(Resource.Id.lblColumn).Text = columnIndex;
}
}
catch (System.Exception ex)
{
Toast.MakeText(context, ex.ToString(), ToastLength.Short).Show();
}
return view;
}
public override int Count
{
get { return columnsCount; }
}
public override Java.Lang.Object GetItem(int position)
{
return null;
}
public override long GetItemId(int position)
{
return position;
}
公共类CustomizeColumnsListAdapter:BaseAdapter
{
私人活动语境;
私家侦探;
公共列表字段值;
公共自定义列SlistAdapter(活动上下文,int columnsCount)
{
this.context=上下文;
this.dataObject=dataObject;
this.columnsunt=columnsunt;
}
公共覆盖视图GetView(int位置、视图转换视图、视图组父视图)
{
RelativeLayout视图=(convertView
??上下文。布局。平坦。充气(
Resource.Layout.customize\列\列表\项,父项,false)
)作为相对人;
尝试
{
string[]sortingColumsItems={“无”、“Id”、“客户名称”、“客户编号”、“城市”、“地址”、“信用额度”、“联系人姓名”、“电话号码”、“邮件”};
ArrayAdapter SpinnerayAdapter=新的ArrayAdapter(上下文,Android.Resource.Layout.SimpleSpinnerItem,排序列站点);
spinnerrayadapter.SetDropDownViewResource(Android.Resource.Layout.SimplesInnerDropDownItem);
view.findviewbyd(Resource.Id.cboCCD).Adapter=spinnerrayadapter;
view.findviewbyd(Resource.Id.cboCCD).Enabled=true;
如果(columnsCount>=位置)
{
字符串columnIndex=(位置+1).ToString();
view.findviewbyd(Resource.Id.lblColumn).Text=columnIndex;
}
}
catch(System.Exception-ex)
{
Toast.MakeText(上下文,例如ToString(),ToastLength.Short).Show();
}
返回视图;
}
公共覆盖整数计数
{
获取{return columnsunt;}
}
public override Java.Lang.Object GetItem(int位置)
{
返回null;
}
公共覆盖长GetItemId(int位置)
{
返回位置;
}
如果您希望向用户展示从列表的每一行启动微调器的方法,一种方法是使用自定义视图,如以下微调器行:
public class SpinnerRow : RelativeLayout, View.IOnClickListener, IDialogInterfaceOnClickListener
{
#region Member Variables
SpinnerItemSelectedDelegate _spinnerItemSelected;
SpinnerPosSelectedDelegate _spinnerPosSelected;
private TextView _label;
private TextView _value;
private ImageButton _edit;
private string[] _options = new String[0];
private int _position;
private AlertDialog.Builder _builder;
#endregion
#region Construction
public SpinnerRow (Context context) :
base (context)
{
Initialize (context, null);
}
public SpinnerRow (Context context, IAttributeSet attrs) :
base (context, attrs)
{
Initialize (context, attrs);
}
protected SpinnerRow (IntPtr doNotUse, Android.Runtime.JniHandleOwnership owner) :
base (doNotUse, owner)
{
//Do nothing
}
protected void Initialize (Context context, IAttributeSet attrs)
{
Inflate (context, Resource.Layout.SpinnerRow, this);
_label = FindViewById<TextView>(Resource.Id.editscope_addons_spinner_row_lbl);
_value = FindViewById<TextView>(Resource.Id.editscope_addons_spinner_row_spin_lbl);
_edit = FindViewById<ImageButton>(Resource.Id.editscope_addons_spinner_row_button);
_label.Text = "Row label";
string[] options = {"None", "Id", "Customer Name", "Customer Number", "City", "Address", "Credit Limit", "Contact Name", "Phone Number", "Mail"};
_options = options;
_edit.SetOnClickListener(this);
_builder = new AlertDialog.Builder(context);
_builder.SetTitle(_label.Text);
}
#endregion
public virtual void OnClick(View v)
{
_builder.SetSingleChoiceItems(_options, _position, this);
_builder.Create().Show();
}
public virtual void OnClick(IDialogInterface dialog, int position)
{
Position = position;
_value.Text = _options[_position];
dialog.Dismiss();
}
public int IndexOf(string option)
{
int numOptions = _options.Length;
for (int i = 0; i < numOptions; i++)
{
if (_options[i].ToLower() == option.ToLower())
return i;
}
return IntentConstants.INVALID_POSITION;
}
public bool Contains(string option)
{
return IndexOf(option) != IntentConstants.INVALID_POSITION;
}
#region Properties
public string Text
{
get { return _label.Text; }
set { _label.Text = value; }
}
public int Position
{
get { return _position; }
set
{
_position = value;
if (_position == IntentConstants.INVALID_POSITION)
{
_value.Text = NotSelectedText;
if (OnSelected != null)
OnSelected("");
}
else if (_options != null && _options.Length > 0)
{
_value.Text = _options[_position];
if (OnSelected != null)
OnSelected(_options[_position]);
}
if (OnPosSelected != null)
OnPosSelected(_position);
}
}
public string ValueText
{
get { return _value.Text; }
}
public String[] Options
{
get { return _options; }
set
{
_options = value;
//Reset the current position so the text is updated
int curPos = Position;
_position = IntentConstants.INVALID_POSITION;
Position = curPos;
}
}
public SpinnerItemSelectedDelegate OnSelected
{
get { return _spinnerItemSelected; }
set { _spinnerItemSelected = value; }
}
public SpinnerPosSelectedDelegate OnPosSelected
{
get { return _spinnerPosSelected; }
set { _spinnerPosSelected = value; }
}
#endregion
}
公共类SpinnerRow:RelativeLayout、View.IOnClickListener、IDialogInterfaceOnClickListener
{
#区域成员变量
SpinnerItemSelectedDelegate\u spinnerItemSelected;
喷丝头已选择Delegate(喷丝头已选择);
私有文本视图标签;
私有文本视图_值;
私有图像按钮_编辑;
私有字符串[]_options=新字符串[0];
私人国际职位;
私有AlertDialog.Builder\u Builder;
#端区
#区域建设
公共喷丝头行(上下文):
基础(上下文)
{
初始化(上下文,null);
}
公共喷丝头行(上下文,IAttributeSet属性):
基本(上下文,属性)
{
初始化(上下文,属性);
}
受保护的SpinnerRow(IntPtr doNotUse,Android.Runtime.jnihandleowner):
基地(不使用,所有者)
{
//无所事事
}
受保护的void初始化(上下文上下文,IAttributeSet属性)
{
膨胀(context,Resource.Layout.SpinnerRow,this);
_label=findviewbyd(Resource.Id.editscope\u addons\u spinner\u row\u lbl);
_value=findviewbyd(Resource.Id.editscope\u addons\u spinner\u row\u spin\u lbl);
_edit=findviewbyd(Resource.Id.editscope\u addons\u spinner\u row\u按钮);
_label.Text=“行标签”;
字符串[]选项={“无”、“Id”、“客户名称”、“客户编号”、“城市”、“地址”、“信用额度”、“联系人姓名”、“电话号码”、“邮件”};
_选项=选项;
_edit.SetOnClickListener(这个);
_builder=新建AlertDialog.builder(上下文);
_builder.SetTitle(_label.Text);
}
#端区
公共虚拟void OnClick(视图v)
{
_builder.SetSingleChoiceItems(_选项,_位置,此项);
_builder.Create().Show();
}
公共虚拟void OnClick(IDialogInterface对话框,int位置)
{
位置=位置;
_value.Text=_选项[_位置];
dialog.dismise();
}
public int IndexOf(字符串选项)
{
int numOptions=_options.Length;
对于(int i=0;i0)
{
_value.Text=_选项[_位置];
if(OnSelected!=null)
当选(_选项[_位置]);
}
if(OnPosSelected!=null)
当选(职位);
}
}
公共字符串值文本
{
获取{return}value.Text;}
}
公共字符串[]选项
{
获取{return\u options;}
设置
{
_选项=价值;
//重置当前位置,以便更新文本
int curPos=位置;
_位置=IntentConstants.INVALID_位置;
位置=curPos;
}
}
公共喷丝头项目SelectedDelegate OnSelected
{
获取{r