Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/182.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Android的Mono:listview中的微调器_C#_Android_Xamarin.android_Spinner_Android Spinner - Fatal编程技术网

C# Android的Mono:listview中的微调器

C# Android的Mono:listview中的微调器,c#,android,xamarin.android,spinner,android-spinner,C#,Android,Xamarin.android,Spinner,Android Spinner,我有一个使用ArrayAdapter从Web服务填充的listview。 Web服务为我提供了所需的所有数据。有些只是纯文本视图,还有一些是EditText和微调器之间的替代。我可以很容易地显示它们,也可以在EditText字段中填充它们到期的值 填充微调器的值时会出现问题。我可以在适配器中定义适配器吗?另外,我的数据来自Web服务,它是作为字符串传递的XML 到目前为止,我的Adapter.cs中的微调器代码: if (item.FieldType == "OptionBOX") {

我有一个使用ArrayAdapter从Web服务填充的listview。 Web服务为我提供了所需的所有数据。有些只是纯文本视图,还有一些是EditText和微调器之间的替代。我可以很容易地显示它们,也可以在EditText字段中填充它们到期的值

填充微调器的值时会出现问题。我可以在适配器中定义适配器吗?另外,我的数据来自Web服务,它是作为字符串传递的XML

到目前为止,我的Adapter.cs中的微调器代码:

if (item.FieldType == "OptionBOX")
    {
        Spinner SpinnerValue = (Spinner) view.FindViewById<Spinner>(Resource.Id.spinnerVal);
        SpinnerValue.Visibility = view.Visibility == ViewStates.Invisible ? ViewStates.Invisible : ViewStates.Visible;

        bool isReadOnly = bool.Parse(item.isReadOnly);

        if (isReadOnly == true)
        {
            SpinnerValue.Enabled = false;
            SpinnerValue.Focusable = false;
            SpinnerValue.FocusableInTouchMode = false;
        }
    }
if(item.FieldType==“OptionBOX”)
{
微调器SpinnerValue=(微调器)view.FindViewById(Resource.Id.spinnerVal);
SpinnerValue.Visibility=view.Visibility==ViewStates.Invisible?ViewStates.Invisible:ViewStates.Visible;
bool isReadOnly=bool.Parse(item.isReadOnly);
if(isReadOnly==true)
{
SpinnerValue.Enabled=false;
SpinnerValue.Focusable=false;
SpinnerValue.FocusableInTouchMode=false;
}
}
微调器的数据位于item.optbox\u选项中

我的XML中的表格便于理解:

<Table diffgr:id="Table5" msdata:rowOrder="4">
<IdRec>5</IdRec>
<FieldId>1026</FieldId>
<FieldDesc>stanje rezervoarja</FieldDesc>
<FieldType>ComboBOX</FieldType>
<isReadOnly>true</isReadOnly>
<FieldValue>6</FieldValue>
<FieldTextValue>2/4</FieldTextValue>
<OptBox_Options>
<Options><myOPT FieldValue="1" FieldTextValue="0"/><myOPT FieldValue="2" FieldTextValue="1/4"/><myOPT FieldValue="6" FieldTextValue="2/4"/><myOPT FieldValue="7" FieldTextValue="3/4"/><myOPT FieldValue="8" FieldTextValue="4/4"/></Options>
</OptBox_Options>
</Table>

5.
1026
stanje rezervoarja
组合框
真的
6.
2/4
因此,为了澄清我的需要和愿望: 我可以在适配器中使用适配器吗?如果可以,如何使用?
如何显示OptBox_选项行中的数据?我需要在我的微调器中显示FieldTextValue列中的值。

为什么您认为不可能在自定义
适配器中的某个位置实例化
适配器
,以填充
列表视图
中的内容?您只需在
列表视图的
适配器
外部为
微调器
实现
适配器

然后,您只需要想出一种解耦的方法,通过
适配器的层次结构传递数据,以便所有级别都能获得所需的数据

然而,我认为
ListView
设计模式不适合这种交互,并且您可能会遇到触摸事件未触发的问题。我认为一个
ExpandableListView
将是一个更明智的设计模式选择,适合您试图实现的目标,并且将具有更好的可用性

您可以在此处找到
可扩展列表视图的示例:

使用以下方法解决:

List<string> entries = new List<string>();

String rawXML = item.OptBox_Options;

StringReader stream = null;
XmlTextReader reader = null;

DataSet xmlDS = new DataSet();
stream = new StringReader(rawXML);
// Load the XmlTextReader from the stream
reader = new XmlTextReader(stream);
xmlDS.ReadXml(reader);

DataSet myOPTvalues = new DataSet();
myOPTvalues = xmlDS;

foreach (DataRow row in myOPTvalues.Tables[0].Rows)
{
    var optItem = new PrevzemSpin();
    optItem.FieldValue = row["FieldValue"].ToString();
    if (optItem.FieldValue.Equals("")) optItem.FieldValue = null;

    optItem.FieldTextValue = row["FieldTextValue"].ToString();
    if (optItem.FieldTextValue.Equals("")) optItem.FieldTextValue = null;

    entries.Add(optItem.FieldTextValue);
    SpinnerValue.Tag = optItem.FieldValue;
}
列表条目=新列表();
字符串rawXML=item.OptBox_选项;
StringReader流=null;
XmlTextReader=null;
数据集xmlDS=新数据集();
流=新的StringReader(rawXML);
//从流中加载XmlTextReader
reader=新的XmlTextReader(流);
ReadXml(reader);
数据集myOPTvalues=新数据集();
myOPTvalues=xmlDS;
foreach(myOPTvalues.Tables[0].Rows中的DataRow行)
{
var optItem=新的PrevzemSpin();
optItem.FieldValue=行[“FieldValue”].ToString();
如果(optItem.FieldValue.Equals(“”)optItem.FieldValue=null;
optItem.FieldTextValue=行[“FieldTextValue”].ToString();
如果(optItem.FieldTextValue.Equals(“”)optItem.FieldTextValue=null;
entries.Add(optItem.FieldTextValue);
SpinnerValue.Tag=optItem.FieldValue;
}