2016-08-19 43 views
0

書寫樣板代碼總是困擾我。 Android中的這些東西之一是有約束力的意見:按名稱自動綁定視圖

TextView email; 
TextView password; 
//... 

private bindViews() { 
    email = (TextView) findViewById(R.id.email); 
    password = (TextView) findViewById(R.id.password); 
    //... 
} 

我認爲可以做得更好。

最近我發現了約ButterKnife庫,我很喜歡它。它使代碼更少:

@BindView(R.id.email) TextView email; 
@BindView(R.id.password) TextView password; 
//... 

ButterKnife.bind(this); 

但事情是,我們通常命名我們的意見匹配他們的id。例如,xml id和java字段名稱都是password。 (並且將蛇套管轉換爲駱駝套管)。所以我在想,理論上ID部分也可以被去除和代碼縮短到這樣的事情:

@BindView TextView email; 
@BindView TextView password; 
//... 

bind(this); 

有這樣的解決方案?如果沒有,它會有用和可行嗎?因爲我想創建它,如果沒有。

回答

1

據我所知,沒有這樣的事情。但ButterKnife正在積極開展工作,並擁有相當多的追隨者。我個人不會退出,只是爲了讓我的代碼略爲冗長。

我認爲這仍然是一個非常酷的練習。可以分叉ButterKnife並嘗試合併該功能。對傑克沃頓的一個圖書館作出貢獻將是一個非常大的成就。

這是值得的,你可能會喜歡LoganSquare。這是一個JSON解析器,它基本上與您使用Annotations描述的相同。這也是非常快。這裏有一個使用它的例子:

@JsonObject 
public class User{ 
    // Will infer JSON key based off variable's name 
    @JsonField 
    public String name; 

    // Can specify a key's name too if you want like this 
    @JsonField(name="date_of_birth") 
    public long dateOfBirth; 

    // LoganSquare requires a default constructor like this 
    public User(){} 
} 
+0

嗯,很高興知道。 Json解析器也很酷,感謝分享。 – Mousa