按名称自动绑定视图

时间:2016-08-19 23:48:33

标签: android findviewbyid butterknife

编写样板代码总是困扰我。 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 个答案:

答案 0 :(得分:1)

据我所知,没有类似的东西。但ButterKnife正在积极开展工作并且拥有相当多的追随者。我个人不会改变,只是为了让我的代码略显冗长。

我认为这仍然是一项非常酷的练习。可以分叉ButterKnife并尝试合并这个功能。这对于Jake Wharton的一个图书馆来说是一个非常大的成就。

对于这是值得的,你可能会喜欢RailsCast Pry debug。它是一个JSON Parser,与你用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(){}
}