2016-10-13 42 views
1

是否有可能在運行時與Butter Knife綁定一個監聽器,如onclick?我想將在運行時確定的視圖傳遞給方法,並在該方法內將監聽器綁定到它們。我知道如何通過常規手段完成我想要做的事情,所以我嚴格詢問黃油刀。如何在運行時用Butter Knife綁定偵聽器?

回答

2

Butterknife註釋的保留策略是CLASS,這意味着註釋的字段被編譯器識別(註釋),但不被虛擬機識別。值的綁定發生在運行時。這意味着所有的字段和方法都被預先註釋了,後來Butterknife擁有一個所有字段和方法的映射,並且生成的類需要被綁定。 Butterknife TL; DR

調用ButterKnife.bind(mRequiredView)將嘗試綁定該視圖中的方法/字段。請注意,如果視圖ID最不明顯,Butterknife會投訴。

這樣做的另一種方法是將您的方法封裝在另一個(內部)類中,該類將用作目標對象。該助手類的

private static class BindWrapper{ 

    @OnClick(R.id.view_later_to_be_bind) 
    public void onClickedView(View v){ 


    } 

} 

實例將用於綁定的觀點,如:

//somewhere in the code where we need to bind the listener 
BindWrapper target = new BindWrapper(); 
ButterKnife.bind(target, mRequiredView) 

沒有真正優雅的解決方案。

相關問題