Android监听器VS Monodroid事件处理程序

本文关键字:事件处理 程序 Monodroid VS 监听器 Android | 更新日期: 2023-09-27 18:27:35

Monodroid/Xamarin.Android独有的EventHandlers(即AdapterView.ItemClick)是为了方便起见,而不是为了方便现有的Android监听器(AdapterView.setOnItemClickListener()),以便它们可以任意交换,还是提供某种变通方法?

无论哪种情况,我都很难弄清楚EventHandler中的对象参数是什么(即sender),也无法在任何地方找到相关文档。

ItemClick的EventHandler定义为:

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

Android特定的监听器看起来像:

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

因此,我想假设发送方等同于视图

是否有一个约定,在所有Monodroid独占的EventHandlers中分配给哪个发送方

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

谢谢。

Android监听器VS Monodroid事件处理程序

sender是被单击的视图的包含父级(因此,在本例中,它将是AdapterView)。

来自相关安卓监听器的参数打包在args

感谢SLaks

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;
    }
}