按名称自动绑定视图
问题描述:
书写样板代码总是困扰我。 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);
有这样的解决方案?如果没有,它会有用和可行吗?因为我想创建它,如果没有。
答
据我所知,没有这样的事情。但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(){}
}
嗯,很高兴知道。 Json解析器也很酷,感谢分享。 – Mousa