我正在Xamarin.Android中创建一个日历,该日历向您显示日期日历。点击日期后,它将获取当天的事件列表,以显示在ListView
中的自定义适配器中,所有事件都在AlertDialog
中。
我想要做的就是拥有它,以便当用户单击列表中的事件时,它会从该事件中获取信息(特别是指向事件网页的URL),然后允许该事件的PositiveButton
AlertDialog
用新的Activity
打开该网站。
我毫不费力地创建AlertDialog
并将ListView
放入其中,并用事件填充列表。我使用代码located here进行了一些细微的修改。
我知道该事件已被选择,因为列表视图的布局文件中的android:listSelector
属性正在按预期触发。但是,我只是无法弄清楚如何访问click事件或掌握所选项目的位置以访问其数据。在另一个Activity
的{{1}}中,我只需执行以下操作:
ListView
这可以很好地获取该列表中各个项目的信息。但是尝试使用HistoricSitesListView.ItemClick += HistoricSitesListView_ItemClick;
void HistoricSiesListView_ItemClick(object sender, AdapterView.ItemClickEventArgs e)
{ code here }
对象做同样的事情会给我一个dialogView
错误。将dialogView制成ListView并投射充气机会产生InvalidCast异常。
我修改的代码如下:
View has no definition for ItemClick
任何人和所有帮助都将不胜感激。
答案 0 :(得分:0)
解决了。
在AlertDialog.Builder中,我这样做:
dialog.SetView(dialogView);
EventListView = dialogView.FindViewById<ListView>(Resource.Id.eventListView);
然后在其外部
EventListView.Adapter = adapter;
EventListView.ItemClick += EventListView_ItemClick;
void EventListView_ItemClick(object sender, AdapterView.ItemClickEventArgs e)
{
currentEventURL = EventStringList[e.Position].EventURL;
}
我早些时候尝试过,但是有空引用异常。我以为是适配器或项目为空,但我只需要将视图的作用域设置为dialogView,因为它是在Calendar布局而不是EventList布局中查找eventListView。