2016-08-19 70 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