-3
私は新しいXamarinをコーディングしています。カスタムアダプターを作ったので、私のアイデアはユーザーがアプリケーションを閉じるときにすべてを保存することでした。いくつかの研究の後、私はこのコードはつもりの仕事だと思った:カスタムリストビューに間違いがあります。
List<GardenClass> MyList = new List<GardenClass>();
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
SetContentView(Resource.Layout.Main);
listview.Adapter = new GardenAdapter(this, MyList);
}
protected override void OnPause()
{
base.OnPause();
write();
}
public void write()
{
string path = System.Environment.GetFolderPath(SpecialFolder.Personal);
string filename = Path.Combine(path, "Files.txt");
try
{
File.WriteAllText(filename,JsonConvert.SerializeObject(MyList));
}
catch (Exception e)
{
Console.WriteLine("Failed to serialize. Reason: " + e.Message);
throw;
}
}
public class GardenAdapter : BaseAdapter<GardenClass>
{
private Context MyCon;
List<GardenClass> items;
Activity context;
public GardenAdapter(Activity context, List<GardenClass> items)
: base()
{
MyCon = context;
this.context = context;
this.items = items;
}
public override long GetItemId(int position)
{
return position;
}
public override GardenClass this[int position]
{
get { return items[position]; }
}
public override int Count
{
get { return items.Count; }
}
public override Android.Views.View GetView(int position, Android.Views.View convertView, ViewGroup parent)
{
var item = items[position];
Android.Views.View view;
if (convertView == null) {
view = context.LayoutInflater.Inflate(Resource.Layout.ListItem, null);
} else { view = convertView; }
view.FindViewById<TextView>(Resource.Id.textView1).Text = item.ToDo;
view.FindViewById<TextView>(Resource.Id.textView2).Text = "Week " + item.Week.ToString();
view.FindViewById<CheckBox>(Resource.Id.checkBox1).Checked = item.Done;
CheckBox MyCheckBox;
checkding = view.FindViewById<CheckBox>(Resource.Id.checkBox1);
// The folowing code prevents the checkbox of stealing the focus, which make a singular listview item unclickable
MyCheckBox.Focusable = false;
MyCheckBox.FocusableInTouchMode = false;
MyCheckBox.Clickable = true;
return view;
}
}
[Serializable]
public class ZaaiSpul
{
public int Week { get; set; }
public string ToDo { get; set; }
public bool Done { get; set; }
}
しかしOnPause()
関数が呼び出されたときに、その後、MyList
は(デバッガでそれを自分自身を見て)私に誤った情報を提供します。
私は間違ったことをやったことは申し訳ありませんが、私はXamarinが初めてです。 私があなたを助けてくれることを願っています。
「間違った情報」を定義できますか? – Gusman
Checkboxの状態が保存されていないことを意味する場合は、リストボックス内の – Selvin
のチェックボックスの状態が間違っています。 –