読者です 読者をやめる 読者になる 読者になる

Xamarin 日本語情報

Xamarin(ザマリン) の代理店だったエクセルソフト田淵のブログです。主に Xamarin に関するエントリーをアップしていきます。(なるべく正しい有益な情報を掲載していきたいと考えていますが、このブログのエントリーは所属組織の公式見解ではありませんのでご注意ください)

Xamarin.Android の ListView で Item を追加、削除したい(ArrayAdapterとSimpleListItem1)

Xamarin Xamarin.Android

こんにちは。エクセルソフトの田淵です。

Xamarin.Android で Custom の ListView が使いたくて色々調べているのですが、BaseAdapter を継承した CustomAdapter のインスタンスは .Add, .Insert, .Remove などがないんですよね。自分で override しなくてはいけないのだろうか… (Xamarin.Forms やりたい…)

ということで、まずは

ArrayAdapter と SimpleListItem1 で Add, Remove する

public class MainActivity : Activity
{
    ListView listView;
    ArrayAdapter simpleAdapter;

    protected override void OnCreate(Bundle bundle)
    {
        base.OnCreate(bundle);
        SetContentView(Resource.Layout.Main);

        listView = FindViewById<ListView>(Resource.Id.simpleListView);

        simpleAdapter = new ArrayAdapter(this, Android.Resource.Layout.SimpleListItem1);
        for (var i = 0; i < 5; i++)
        {
            simpleAdapter.Add("item_" + i);
        }

        listView.Adapter = simpleAdapter;

        listView.ItemClick += OnListItemClick;

        var addButton = FindViewById<Button>(Resource.Id.mainAddButton);
        addButton.Click += (sender, e) =>
        {
            var rdm = new Random();
            simpleAdapter.Add("item_" + rdm.Next());
        };

        var deleteButton = FindViewById<Button>(Resource.Id.mainDeleteButton);
        deleteButton.Click += (sender, e) =>
        {
            if(simpleAdapter.Count > 0)
            {
                var item = simpleAdapter.GetItem(simpleAdapter.Count - 1);
                simpleAdapter.Remove(item);
            }
        };
    }

    private void OnListItemClick(object sender, AdapterView.ItemClickEventArgs e)
    {
        var listView = sender as ListView;
        var t = simpleAdapter.GetItem(e.Position).ToString();
        Toast.MakeText(this, t, ToastLength.Short).Show();
        Console.WriteLine("Clicked on " + t);
    }
}

インスタンス化した simpleAdapter に対して、そのまま AddRemove ができますね。

ArrayAdapter API リファレンス には Add とかあります。というか、ArrayAdapterBaseAdapter を継承してますね… そりゃ BaseAdapter には Add ないわけだw

もう少し調べてみます。

Xamarin 気になった方は

是非 ダウンロード して触ってみてください。Visual Studio 2015 をご利用の方は Update 3 にアップデートする際にカスタムインストールで Xamarin を追加しましょう。 学習用リソースJXUG リンクページ に参考資料を纏めてますので併せてどうぞ。

Xamarin の導入支援サービスを始めました。ベースは基本的なアプリを一緒に作ることで Xamarin を使えるようになって頂く内容ですが、ご要望に応じて講習内容のカスタマイズも可能です。詳しくは田淵までお問い合わせください(^^)

ytabuchi.hatenablog.com

Xamarin の情報が欲しい方はこのブログも購読いただいたり、私のTwitterアカウントをフォローいただいたりすると嬉しいです。

私が所属している エクセルソフト の宣伝を少しさせてください。弊社は開発者向けの様々なソフトウェアを扱っています。おなじみの ReSharper (JetBrains)、 や Atlassian の JIRA, Confluence、Office/PDF ファイルを .NET/Java で操作するライブラリ Aspose(アスポーズ)Windows アプリ、Web ページ、iOS/Android アプリの UI テストができる TestComplete などお勧めです(^^) また、Visual Studio Professional/Enterprise with MSDN も販売してますし、日本で売っていない海外のソフトウェア、開発ツールなどを弊社経由で日本円で購入頂くことも可能です。ご興味あれば 弊社ページ を覗いてみてください。

以上です。