匿名事件

时间:2012-09-05 04:37:14

标签: c# java xamarin.android

我很难为Android编写一个C#Mono,相当于以下Java事件处理程序代码:

public class Player extends ListActivity
{
    private ImageView list;//basically this is a buttona

    private void SetupButtonListeners()
    {
        list.setOnClickListener(new OnClickListener()
        {
             public void onClick(View v)
             {
                  //do stuff
             }
        });
    }
    /*
       more stuff here
    */
}

API REF:http://androidapi.xamarin.com/?link=T%3aAndroid.Widget.Button

2 个答案:

答案 0 :(得分:4)

虽然您可以设置一个点击监听器,如另一个答案中所示,类似于在Java中完成的方式,但这不是在Mono for Android中执行操作的首选方式。由于C#没有匿名类定义,因此Mono for Android实际上将这些侦听器接口转换为事件,从而产生更好的API。例如,在这种情况下,您可以使用任何View类中出现的Click事件:

ListView list;

list.Click += delegate(object sender, EventArgs e)
                      {
                          // do stuff
                      };

答案 1 :(得分:2)

根据documentaton,C#中没有匿名接口实现:

public virtual void SetOnClickListener (View.IOnClickListener l)

除非已经有一些辅助类,否则你需要编写实现此接口的类并将其传入。如果找不到现有的类,你应该能够创建辅助函数来创建类并将委托作为实现OnClick方法。