いくつかの値を持つスピナーがあり、Webサービスから入力します。
スピナーの充填
int i = 0;
var dropItems = new List<SpinItem2>();
DataRow[] result = myOPTvalues.Tables[0].Select("FieldValue=" + item.FieldValue);
foreach (DataRow row in result)
{
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;
dropItems.Add(new SpinItem2(i, optItem.FieldValue.ToString(), optItem.FieldTextValue.ToString()));
}
i = 1;
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;
if (optItem.FieldValue != item.FieldValue)
{
dropItems.Add(new SpinItem2(i, optItem.FieldValue.ToString(), optItem.FieldTextValue.ToString()));
}
++i;
}
何らかの理由で、最初に挿入されたアイテムがデフォルトで「選択」され、次に選択されたものを送信するために使用するItemSelectedイベントをトリガーするように動作しますが、それは望ましくありません。
画面にこれらのスピナーがかなりあるため、アクティビティが非常に遅くなり、フィールドに誤った値が送信されます。また、ItemSelectを使用して、すべてが正常に行われたかどうかを検出します(たとえば、サービスが低下したか、値自体が変更されたとします)。ユーザーがフォームに入力している間、サーバー上(サーバーアプリケーションに新しいフィールドを追加した人など)
アクティビティの読み込みではなく実際のユーザーインタラクションでトリガーするようにアプリに指示する方法はありますか?