2016-07-10 73 views
3

結合銜接頭我創造了這個結合銜接Android的數據綁定與類引用

@BindingAdapter("adapter") 
public static void setAdapter(RecyclerView view, RecyclerView.Adapter<RecyclerView.ViewHolder> adapter) { 
    view.setAdapter(adapter); 
} 

和XML

app:adapter="@{com.package.Adapter}" 

設置它給各種錯誤吧。這樣做,你可以在XML與佈局管理做這樣

app:layoutManager="android.support.v7.widget.LinearLayoutManager" 

同樣的事情,我要的是你知道如何解決這個問題,通過與一類?

P.S.我不想在XML中傳遞變量引用,因爲我們說我只想使用XML。

回答

3

看起來您嘗試在XML中設置類,但正在接受BindingAdapter中的實例。如果你想接受一個類,並在您的BindingAdapter實例,它會使用反射,這樣的:

@BindingAdapter("adapter") 
public static void setAdapter(RecyclerView view, Class adapter) { 
    try { 
     Object instance = adapter.newInstance(); 
     view.setAdapter((RecyclerView.Adapter)adapter); 
    } catch (Exception e) { 
     Log.e(....); 
    } 
} 

如果你想一個實例傳遞給你的綁定(一個更好的方法,IMO),你不」你需要一個BindingAdapter。您可以信賴現有的setAdapter電話:

<layout> 
    <data> 
     <variable name="adapter" type="android.support.v7.widget.RecyclerView.Adapter"/> 
    </data> 
    <android.support.v7.widget.RecyclerView 
     app:adapter="@{adapter}" .../> 
</layout>