【发布时间】:2017-03-14 20:36:58
【问题描述】:
我正在开发一个 android 应用程序,我在 Xamarin、Visual stuio 中使用 c# 编写了这些代码:
const string KEY_FOR_TRY = "TRY";
ArrayAdapter<string> _spinnerAdapter;
List<string> items;
protected override void OnCreate (Bundle savedInstanceState)
{
base.OnCreate (savedInstanceState);
SetContentView (Resource.Layout.Main);
string user;
ISharedPreferences prefs = PreferenceManager.GetDefaultSharedPreferences (this);
ISharedPreferencesEditor editor = prefs.Edit();
var savedItems = prefs.GetStringSet (KEY_FOR_TRY, new List<string> ());
_spinnerAdapter = new ArrayAdapter<string>(this, Android.Resource.Layout.SimpleSpinnerItem, items);
spinner.Adapter = _spinnerAdapter;
items = new List<string> (savedItems) {"1", "2", "3"};
Button button4 = FindViewById<Button> (Resource.Id.button4);
Spinner spinner = FindViewById<Spinner> (Resource.Id.spinner1);
EditText input = FindViewById<EditText> (Resource.Id.input);
button4.Click += delegate
{
user = input.Text;
items.Add (user);
editor.PutStringSet (KEY_FOR_TRY, items);
editor.Apply ();
_spinnerAdapter.Insert (user, 0);
_spinnerAdapter.NotifyDataSetChanged ();
};
user = items.FirstOrDefault ();
_spinnerAdapter = new ArrayAdapter<string> (this, Android.Resource.Layout.SimpleSpinnerItem, items);
spinner.Adapter = _spinnerAdapter;
}
Button button5 = FindViewById<Button>(Resource.Id.button5);
button5.Click += delegate
{
items.Remove(spinner.SelectedItem.ToString());
editor.Remove(spinner.SelectedItem.ToString());
editor.Apply();
_spinnerAdapter = new ArrayAdapter<string>(this, Android.Resource.Layout.SimpleSpinnerItem, items);
spinner.Adapter = _spinnerAdapter;
};
user = items.FirstOrDefault();
spinner.Adapter = _spinnerAdapter;
我想要一个button5,它从spinner 和SharedPreference prefs 中删除用户选择的项目。此外,当我运行这些代码时,var items 中的每个项目在微调器中显示两次,我该如何停止呢?并且 (button4) 如果用户输入了两次相同的值,我想显示一个 toast message 表示您已经输入了这个值。
编辑:
button5 从微调器中删除该项目并且不会永久删除它,因此当我关闭并重新打开应用程序时,已删除的项目重新出现在微调器中。此外,var items 中的每个项目在spinner 中显示两次,但新添加的项目仅显示一次。
请帮我解决这些问题..
提前谢谢..
【问题讨论】:
标签: c# android xamarin save spinner