Java事件绑定问题绑定库

时间:2017-09-01 09:28:22

标签: java c# xamarin xamarin.android java-binding

我将此https://github.com/blazsolar/HorizontalPicker库转移到Java绑定库中。 该库实现了一个OnItemSelected事件,它在Java中就像这样使用。

@Override
public void onItemSelected(int index)    {
    Toast.makeText(this, "Item selected", Toast.LENGTH_SHORT).show();
}

现在我想在我的C#代码中使用它。

var Picker = view.FindViewById<Com.Wefika.Horizontalpicker.HorizontalPicker>(Resource.Id.numberPicker);
Picker.onItemClicked+= delegate{};

不幸的是onItemClicked不存在。 我查看了生成的api xml并在那里声明了它。

<interface abstract="true" deprecated="not deprecated" final="false" name="HorizontalPicker.OnItemClicked" static="true" visibility="public">
<method abstract="true" deprecated="not deprecated" final="false" name="onItemClicked" native="false" return="void" static="false" synchronized="false" visibility="public">

现在我想知道如何使用这个活动? 我是否需要修改某些内容,还是可以通过其他方式获取内容?

1 个答案:

答案 0 :(得分:1)

看起来如何,问题在于原始项目,因为它无法为其创建事件委托。您可以使用以下代码来使用该事件,并且必须为以下代码编写IOnClicked的实现:

HorizontalPicker Picker = view.FindViewById<Com.Wefika.Horizontalpicker.HorizontalPicker>(Resource.Id.numberPicker);
HorizontalPickerItemClicked itemclicked = new HorizontalPickerItemClicked();
Picker.SetOnItemClickedListener(itemclicked); 

更新实施:

public class HorizontalPickerItemClicked : HorizontalPicker.IOnItemClicked
{
    public void Dispose()
    {

    }

    public IntPtr Handle { get; }
    public void OnItemClicked(int p0)
    {
        // Do something with p0
    }
}