Xamarin.iOSで作っていたアプリが一通りできたので審査に出しました。同じアプリをXamarin.Androidで作るにあたってリストビューってどうやって表示するんだろうと調べてみました。
ListViewに文字列を表示させるだけであれば難しくなさそうと思って実装してみたのですが、Android.Resource.Layout.SimpleListItem1
が定義されておらずコンパイルエラーが発生しました。
namespace hoge.Android { [Activity(Label = "hoge", MainLauncher = true, Icon = "@drawable/icon")] public class MainActivity : ListActivity { protected override void OnCreate(Bundle bundle) { base.OnCreate(bundle); var adapter = new ArrayAdapter(this, Android.Resource.Layout.SimpleListItem1); // ← 定義されていない? for (var i = 0; i < 40; i++) { adapter.Add("item_" + i); } ListAdapter = adapter; } } }
単純にアセンブリの参照忘れかもしれませんがにっちもさっちもいかず、Android.Resource.Layout.SimpleListItem1
の代わりにsimple_list_item_1
の定義値でもある0x01090003
を指定して実行することはできました。
何が悪いのか分からなくって、基本的なところで詰まっていると先が長そうです……
追記
お昼から戻ってきたらリプライを頂いていました。
@ch3cooh それはもしかしてソースコードのnamespaceが".Android"で終わっているからでは? http://t.co/4xpG3Gg0sq
— Atsushi Eno (@atsushieno) 2014, 11月 12
@ch3cooh ブログにもコメントしてみましたが global::Android~ って書くと参照できると思いますよ
— ざまりますたー (@amay077) 2014, 11月 12
解決しました!まさしくその通りで、hoge.Android 名前空間
とAndroid 名前空間
が競合していました。