我正在玩Monodroid,尝试在启动时将适配器设置为listview。我在屏幕上有一堆控件,我想要做的是当点击按钮时,一个项目进入列表视图。
我没有从调试器中得到任何错误,只是“遗憾的是Application1已停止”,这使我很难弄清楚我做错了什么。
这是我的代码:
public class Activity1 : Activity
{
List<string> items = new List<string>();
ArrayAdapter<string> adaptor;
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
SetContentView(Resource.Layout.Main);
int i = 0;
items.Add("Hello world");
adaptor = new ArrayAdapter<string>(this,
Resource.Id.listView1,
items);
Button button = FindViewById<Button>(Resource.Id.button1);
ListView listView = FindViewById<ListView>(Resource.Id.listView1);
listView.SetAdapter(adaptor);
button.Click += delegate
{
items.Add("Hello " + ++i);
adaptor.NotifyDataSetChanged();
};
}
}
发表评论后,我发现设备日志包含以下内容:
android.content.res.Resources$NotFoundException: Resource ID #0x7f050003 type #0x12 is not valid
这是Resource.Designer.cs中列表视图的ID
public const int listView1 = 2131034115;
listview声明如下:
<ListView
p1:minWidth="25px"
p1:minHeight="25px"
p1:layout_width="wrap_content"
p1:layout_height="fill_parent"
p1:id="@+id/listView1"
p1:layout_marginBottom="70dp" />
答案 0 :(得分:2)
我在阅读完文档后想出来了。在实例化ArrayAdapter时,必须通过引用Android.Resource.Layout.SimpleListItem1或其他列表项资源来实例化它,而不是列表视图本身。
答案 1 :(得分:0)
我对此代码有同样的问题:
mForecastAdapter =
new ArrayAdapter<String>(
this,
android.R.layout.mymain,
R.id.list_view_forecast,
foreCastArray
);
然后在阅读你的帖子之后,我将其改为:
mForecastAdapter =
new ArrayAdapter<String>(
this,
android.R.layout.simple_list_item_1,
// R.id.list_view_forecast,
foreCastArray
);
使用简单列表视图和删除了列表视图ID。这很有用。