ソースコード
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="LastOilChange.MainPage">
<ScrollView>
<VerticalStackLayout
Spacing="25"
Padding="30,0"
VerticalOptions="Center">
<HorizontalStackLayout
Spacing="25"
Padding="30,0"
HorizontalOptions="Center">
<Label
x:Name="MemoLbl1"
FontSize="24"
Text="メモ1"
HorizontalOptions="Center" />
<Button
x:Name="EditMemoBtn1"
Text="編集"
Clicked="OnEditMemoBtn1Clicked"
HorizontalOptions="Center" />
<DatePicker
x:Name="DatePicker1"
DateSelected="OnDatePicker1Slected" />
</HorizontalStackLayout>
<HorizontalStackLayout
Spacing="25"
Padding="30,0"
HorizontalOptions="Center">
<Label
x:Name="MemoLbl2"
FontSize="24"
Text="メモ2"
HorizontalOptions="Center" />
<Button
x:Name="EditMemoBtn2"
Text="編集"
Clicked="OnEditMemoBtn2Clicked"
HorizontalOptions="Center" />
<DatePicker
x:Name="DatePicker2"
DateSelected="OnDatePicker2Slected" />
</HorizontalStackLayout>
<HorizontalStackLayout
Spacing="25"
Padding="30,0"
HorizontalOptions="Center">
<Label
x:Name="MemoLbl3"
FontSize="24"
Text="メモ3"
HorizontalOptions="Center" />
<Button
x:Name="EditMemoBtn3"
Text="編集"
Clicked="OnEditMemoBtn3Clicked"
HorizontalOptions="Center" />
<DatePicker
x:Name="DatePicker3"
DateSelected="OnDatePicker3Slected" />
</HorizontalStackLayout>
</VerticalStackLayout>
</ScrollView>
</ContentPage>
ファイル名:MainPage.xaml.cs
using System.Text.Json;
namespace LastOilChange;
public class MemoRecord
{
public DateTime Date { get; set; }
public string Memo { get; set; }
}
public class DataContext
{
public List<MemoRecord> MemoRecords { get; set; } = new List<MemoRecord>();
string jsonPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "/LastOilChange.json";
public DataContext()
{
if (System.IO.File.Exists(jsonPath)) {
string jsonString = File.ReadAllText(jsonPath);
MemoRecords = JsonSerializer.Deserialize<List<MemoRecord>>(jsonString)!;
}
else {
MemoRecords.Add(new MemoRecord {
Date = DateTime.Now,
Memo = "オイル交換",
});;
MemoRecords.Add(new MemoRecord
{
Date = DateTime.Now,
Memo = "メモ2",
});
MemoRecords.Add(new MemoRecord
{
Date = DateTime.Now,
Memo = "メモ3",
});
string jsonString = JsonSerializer.Serialize(MemoRecords);
File.WriteAllText(jsonPath, jsonString);
}
}
public async Task<long> UpdateJson()
{
using FileStream createStream = File.Create(jsonPath);
await JsonSerializer.SerializeAsync(createStream, MemoRecords);
await createStream.DisposeAsync();
return (new System.IO.FileInfo(jsonPath)).Length;
}
}
public partial class MainPage : ContentPage
{
DataContext data = null;
public MainPage()
{
InitializeComponent();
this.Loaded += (_, _) =>
{
data = new DataContext();
MemoLbl1.Text = data.MemoRecords[0].Memo;
DatePicker1.Date = data.MemoRecords[0].Date;
MemoLbl2.Text = data.MemoRecords[1].Memo;
DatePicker2.Date = data.MemoRecords[1].Date;
MemoLbl3.Text = data.MemoRecords[2].Memo;
DatePicker3.Date = data.MemoRecords[2].Date;
};
}
private async void OnEditMemoBtn1Clicked(object sender, EventArgs e)
{
string memo = MemoLbl1.Text;
string result = await DisplayPromptAsync("メモ", "変更", initialValue: memo);
if (result != null)
{
if (data.MemoRecords[0].Memo != result)
{
data.MemoRecords[0].Memo = result;
await data.UpdateJson();
MemoLbl1.Text = data.MemoRecords[0].Memo;
}
}
}
private async void OnDatePicker1Slected(object sender, EventArgs e)
{
if (data.MemoRecords[0].Date != DatePicker1.Date) {
data.MemoRecords[0].Date = DatePicker1.Date;
await data.UpdateJson();
}
}
private async void OnEditMemoBtn2Clicked(object sender, EventArgs e)
{
string memo = MemoLbl2.Text;
string result = await DisplayPromptAsync("メモ", "変更", initialValue: memo);
if (result != null)
{
if (data.MemoRecords[1].Memo != result)
{
data.MemoRecords[1].Memo = result;
await data.UpdateJson();
MemoLbl2.Text = data.MemoRecords[1].Memo;
}
}
}
private async void OnDatePicker2Slected(object sender, EventArgs e)
{
if (data.MemoRecords[1].Date != DatePicker2.Date)
{
data.MemoRecords[1].Date = DatePicker2.Date;
await data.UpdateJson();
}
}
private async void OnEditMemoBtn3Clicked(object sender, EventArgs e)
{
string memo = MemoLbl3.Text;
string result = await DisplayPromptAsync("メモ", "変更", initialValue: memo);
if (result != null)
{
if (data.MemoRecords[2].Memo != result)
{
data.MemoRecords[2].Memo = result;
await data.UpdateJson();
MemoLbl3.Text = data.MemoRecords[2].Memo;
}
}
}
private async void OnDatePicker3Slected(object sender, EventArgs e)
{
if (data.MemoRecords[2].Date != DatePicker2.Date)
{
data.MemoRecords[2].Date = DatePicker2.Date;
await data.UpdateJson();
}
}
}
実行
「編集」ボタンを押すとメモが編集できますので「オイル交換」から任意の要件に変更することが出来ます。日付を変更する場合は日付をクリックしてみてください。
項目の値を変更する都度内容をテキストファイル(json形式)で保存しています。保存先をWindowsぽくMyDocumentsを指定していますが、Androidではどこに保存されているか不明です。ただアプリをアンインストールすると初期化されるのでjsonファイルも削除されていると思われます。
コメント