0

ArrayAdapterを使用してWebサービスから入力されるリストビューがあります。Webサービスは、必要なすべてのデータを提供してくれます。一部は単なるテキストビューですが、EditTextとスピナーを交互に使用するものもあります。私はそれらを簡単に表示し、EditTextフィールドの期限の値も入力します。

問題は、スピナーの値を埋めることにあります。アダプター内にアダプターを定義できますか?また、私のデータは、文字列として渡されるXMLとしてWebサービスから取得されます。

これまでの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;
        }
    }

スピナーのデータはitem.optbox_options内にあります。

理解を容易にするための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>

だから、私のニーズと欲求を明確にするために:アダプター内でアダプターを使用できますか?OptBox_Options行のデータを表示するにはどうすればよいですか?スピナー内のFieldTextValue列の値を表示する必要があります。

4

2 に答える 2

1

Adapterカスタム内のどこかにインスタンス化して、その中にコンテンツを入力するAdapterことができないと思うのはなぜですか?forの外でforのListView実装を簡単に行うことができます。AdapterSpinnerAdapterListView

Adapters次に、すべてのレベルが必要なデータを取得できるように、の階層を介してデータを渡す分離された方法を考える必要があります。

ただし、この種のインタラクションにはデザインパターンが適していないと思いますListView。おそらく、タッチイベントが発生しないという問題が発生するでしょう。ExpandableListView達成しようとしていることに対して、より賢明なデザインパターンの選択であり、使いやすさが向上すると思います。

ここで例を見つけることができますExpandableListViewAndroid用ExpandableListView Mono

于 2013-01-22T14:02:26.573 に答える
0

使用して解決:

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;
}
于 2013-01-25T11:45:24.603 に答える