Как я могу использовать длинные клики в MonoDroid? - PullRequest
1 голос
/ 24 сентября 2011

в данный момент я использую длинные клики таким образом:

button.SetOnLongClickListener(new MyLongClickListener());

public class MyLongClickListener : View.IOnLongClickListener
{
    public bool OnLongClick(View v)
    {
        //do something pretty cool
        return true;
    }

    public IntPtr Handle
    {
        get { throw new NotImplementedException(); }
    }
}

Но написание класса просто для того, чтобы сделать простой или двухслойный в OnLongClick-методе, кажется не очень умным Так что мне интересно, есть ли лучшее решение?

Ответы [ 2 ]

4 голосов
/ 24 сентября 2011

Подход к написанию класса слушателя - это способ сделать это в Java, именно поэтому он представлен в Mono для Android. Тем не менее, в Mono для Android вы можете назначить делегата типа LongClickHandler свойству LongClick , если вы предпочитаете это. если вы предпочитаете это.

view.LongClick = onLongClick;

private bool onLongClick(View view) 
{
    // do some stuff

    return true;
}

или

view.LongClick = (clickedView) =>
{
    // do some stuff

    return true;
};
1 голос
/ 24 сентября 2011

См. Пример кода:

[Activity(Label = "My Activity", MainLauncher = true)]
public class Activity1 : Activity
{
protected override void OnCreate(Bundle bundle)
{
    base.OnCreate(bundle);            
    SetContentView(Resource.layout.main);

    Button button = FindViewById<Button>(Resource.id.button);
    TextView view = FindViewById<TextView>(Resource.id.text);

    button.Click += (s, args) => view.Text = "Clicked!";
    button.LongClick += (s, args) =>
                            {
                                view.Text = "Long click!";
                                args.ReturnValue = false;
                            };
}
}
...