Android Listeners VS Monodroid EventHandlers

时间:2013-08-14 13:37:13

标签: c# mono xamarin.android

Monodroid / Xamarin.Android独有的EventHandlers(即AdapterView.ItemClick)是否为了方便而不是股票Android Listeners(AdapterView.setOnItemClickListener()),以便它们可以互相任意互换,或者它们是提供某种工作或什么?

在任何一种情况下,我在查找EventHandler 中的对象参数(即发件人)时遇到问题,并且无法在任何地方找到文档。

AndapterView.ItemClick的EventHandler定义为:

public void ItemClickEventHandler(object sender, ListView.ItemClickEventArgs args)
{
   // what is sender ?
}

和Android特定的Listener看起来像:

public void onItemClick(AdapterView parent, View view, int position, long id)
{        
   // sender == parent ??
   // sender == view ??
}

因此,我想假设发件人相当于查看

是否有针对所有Monodroid独家EventHandler分配发件人的约定?

我也非常感谢这方面的一些文档,因为我在这里找不到它:http://androidapi.xamarin.com/?link=T%3aAndroid.Widget.AdapterView并且我对Reflector的试用用完了(否则我会自己看看)。

谢谢。

1 个答案:

答案 0 :(得分:0)

发件人是所点击视图的包含父级(因此,在这种情况下,它将是 AdapterView )。

相关Android侦听器的参数打包在 args

感谢SLAK !!!

public class ItemClickEventArgs : EventArgs
{
    private AdapterView parent;
    private View view;
    private int position;
    private long id;

    public AdapterView Parent { get { return this.parent; } }
    public View View { get { return this.view; } }
    public int Position { get { return this.position; } }
    public long Id { get { return this.id; } }

    public ItemClickEventArgs(AdapterView parent, View view, int position, long id)
    {
        this.parent = parent;
        this.view = view;
        this.position = position;
        this.id = id;
    }
}