2017-09-01 14 views
1

私はこのhttps://github.com/blazsolar/HorizontalPickerライブラリをJavaバインディングライブラリに移しました。 ライブラリは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"> 

今 - 私は私がこのイベントを使用することができますか疑問? 何かを修正する必要がありますか、それとも別の方法で入手できますか?

+0

あなたはJavaバインディングライブラリを利用できるようにするので、私でしたそれをチェックできますか? – Cyriac

+0

https://gitlab.com/Olias/binding/tree/master/Binding_Horizo​​ntalPicker – Olias

答えて

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 
    } 
} 
+0

「IOnClicked実装」の例がありますか? – Olias

+0

が更新されました。もう一つの選択肢は、Horizo​​ntalPickerクラスを調整すること、またはバインディングライブラリでそれを再マップすることですが、その方法はわかりません。 – Cyriac

+0

内部クラスクリッカー:Java.Lang.Object、Horizo​​ntalPicker.IOnItemClicked { private Horizo​​ntalPicker.IOnItemClicked _onItemClickedImplementation; public void OnItemClicked(int p0) { MessageBus.Default.Post( "1"); } } – Olias