プログラミング

Xamarinで連絡先アプリ作成

Xamarinを使用した連絡先アプリケーションの構築 – 第3部

はじめに

前回の記事では、Xamarinを使用した連絡先アプリケーションの基本的な構成要素と、簡単なUIの作成方法を紹介しました。第3部では、アプリケーションに高度な機能を追加し、ユーザーが連絡先を管理できるようにする方法を解説します。このパートでは、データベースとの統合、連絡先の保存、表示、編集機能などを含みます。

1. 必要なパッケージのインストール

まず、アプリケーションに必要なNuGetパッケージをインストールします。これにより、データベース操作やユーザーインターフェースの改善が可能になります。

  • SQLite-net-pcl: SQLiteデータベースとの統合に使用します。ローカルデータベースで連絡先を保存するために必要です。

  • Xamarin.Essentials: デバイスの連絡先情報にアクセスするために使用します。これにより、ユーザーのデバイス上に保存されている連絡先を取得できます。

これらのパッケージは、NuGetパッケージマネージャーを使用してインストールできます。

bash
Install-Package SQLite-net-pcl Install-Package Xamarin.Essentials

2. SQLiteデータベースの設定

SQLiteは、軽量でモバイルアプリケーション向けに最適なデータベースです。アプリ内で連絡先情報を保存し、管理するためにSQLiteデータベースを設定します。

データベースクラスの作成

まず、SQLiteデータベースの操作を管理するためのクラスを作成します。このクラスでは、データベースの初期化、テーブルの作成、データの挿入、取得、更新、削除を行います。

csharp
using SQLite; public class Contact { [PrimaryKey, AutoIncrement] public int Id { get; set; } public string Name { get; set; } public string PhoneNumber { get; set; } public string Email { get; set; } } public class DatabaseService { private SQLiteConnection _database; public DatabaseService(string dbPath) { _database = new SQLiteConnection(dbPath); _database.CreateTable(); } public int SaveContact(Contact contact) { return _database.Insert(contact); } public List<Contact> GetContacts() { return _database.Table().ToList(); } public int DeleteContact(int id) { return _database.Delete(id); } public int UpdateContact(Contact contact) { return _database.Update(contact); } }

データベースの初期化

次に、アプリケーションの起動時にデータベースを初期化します。この処理をApp.xaml.csに追加します。

csharp
public static DatabaseService Database; public App() { InitializeComponent(); string dbPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "contacts.db3"); Database = new DatabaseService(dbPath); MainPage = new NavigationPage(new ContactListPage()); }

3. 連絡先情報の取得

Xamarin.Essentialsを使用して、デバイスの連絡先情報にアクセスします。このパートでは、ユーザーが自分の連絡先リストをアプリケーションにインポートできるようにします。

連絡先の取得

Xamarin.Essentialsを使って、デバイスの連絡先情報を取得します。この操作は非同期で行います。

csharp
using Xamarin.Essentials; public async Task> GetDeviceContactsAsync() { var contacts = await Contacts.GetAllAsync(); List contactList = new List(); foreach (var contact in contacts) { contactList.Add(new Contact { Name = contact.DisplayName, PhoneNumber = contact.Phones.Count > 0 ? contact.Phones[0].PhoneNumber : "", Email = contact.Emails.Count > 0 ? contact.Emails[0].EmailAddress : "" }); } return contactList; }

連絡先の表示

取得した連絡先情報をUIに表示するために、ListViewを使用します。以下のコードでは、取得した連絡先をリストに表示します。

csharp
public partial class ContactListPage : ContentPage { public ContactListPage() { InitializeComponent(); LoadContacts(); } private async void LoadContacts() { var contacts = await GetDeviceContactsAsync(); ContactsListView.ItemsSource = contacts; } }

XAMLでのリストビュー設定

ContactListPage.xamlで、ListViewを設定して連絡先情報を表示します。

xml
"1.0" encoding="utf-8" ?> <ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" x:Class="ContactApp.ContactListPage"> <ListView x:Name="ContactsListView"> <ListView.ItemTemplate> <DataTemplate> <TextCell Text="{Binding Name}" Detail="{Binding PhoneNumber}" /> DataTemplate> ListView.ItemTemplate> ListView> ContentPage>

4. 連絡先の追加、編集、削除

ユーザーが連絡先を追加、編集、削除できるように、各機能を実装します。

連絡先の追加

連絡先を追加するために、ユーザーが名前と電話番号を入力できるフォームを作成します。

csharp
public partial class AddContactPage : ContentPage { public AddContactPage() { InitializeComponent(); } private async void OnSaveButtonClicked(object sender, EventArgs e) { var contact = new Contact { Name = NameEntry.Text, PhoneNumber = PhoneNumberEntry.Text, Email = EmailEntry.Text }; App.Database.SaveContact(contact); await Navigation.PopAsync(); } }

AddContactPage.xamlでは、名前と電話番号を入力するためのエントリーフィールドを設定します。

xml
"1.0" encoding="utf-8" ?> <ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" x:Class="ContactApp.AddContactPage"> <StackLayout Padding="10"> <Entry x:Name="NameEntry" Placeholder="Name" /> <Entry x:Name="PhoneNumberEntry" Placeholder="Phone Number" /> <Entry x:Name="EmailEntry" Placeholder="Email" /> <Button Text="Save" Clicked="OnSaveButtonClicked" /> StackLayout> ContentPage>

連絡先の削除

ユーザーが連絡先を削除できるように、SwipeDeleteアクションを使用します。

csharp
private async void OnDeleteContact(object sender, EventArgs e) { var contact = (Contact)((MenuItem)sender).BindingContext; App.Database.DeleteContact(contact.Id); LoadContacts(); }

XAMLでは、リストアイテムにスワイプアクションを追加します。

xml
<ListView x:Name="ContactsListView" ItemSelected="OnItemSelected"> <ListView.ItemTemplate> <DataTemplate> <ViewCell> <StackLayout> <Label Text="{Binding Name}" /> <Label Text="{Binding PhoneNumber}" /> StackLayout> <ViewCell.ContextActions> <MenuItem Text="Delete" BackgroundColor="Red" Clicked="OnDeleteContact"/> ViewCell.ContextActions> ViewCell> DataTemplate> ListView.ItemTemplate> ListView>

5. まとめ

今回は、Xamarinを使用して連絡先アプリケーションに高度な機能を追加しました。SQLiteを使用したデータ保存、Xamarin.Essentialsを使用したデバイスの連絡先の取得、連絡先の追加、編集、削除機能を実装しました。これらの機能を組み合わせることで、ユーザーは自分の連絡先を簡単に管理できるアプリケーションを作成することができます。

次回の記事では、さらなるカスタマイズやパフォーマンス向上のためのテクニックについて詳しく解説します。

Back to top button