【发布时间】:2016-11-19 23:37:46
【问题描述】:
我正在使用ButterKnife 将我的观点绑定到我的ViewHolder。我的代码如下:
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
private List<DataObject> data;
public MyAdapter(List<DataObject> data) {
this.data = data;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.my_layout, parent, false);
return new ViewHolder(view);
}
public static class ViewHolder extends RecyclerView.ViewHolder {
@BindView(R.id.row_header_view) View rowHeaderView;
@BindView(R.id.row_header_view_text) TextView headerTextView;
@BindView(R.id.row_data_view) View rowDataView;
@BindView(R.id.row_data_view_text) TextView rowDataTextView;
@BindView(R.id.row_data_view_detail_text) TextView rowDataDetailTextView;
public ViewHolder(View view) {
super(view);
ButterKnife.bind(this, view);
}
}
}
出于某种原因,在我的ViewHolder 中,所有BindView 什么都不做。它们都是空的。我可以肯定地确认它们在我的布局中。我上面的代码有什么问题?我已按照此处列出的文档使用它:
http://jakewharton.github.io/butterknife/#reset
还有什么要求吗?我正在使用ButterKnife 版本:
compile 'com.jakewharton:butterknife:8.2.1'
如果我添加以下行:
rowHeaderView = view.findViewById(R.id.row_header_view);
它能够正确获取视图。但这有什么意义呢? ButterKnife 在findViewById 可用的地方不可用吗?
【问题讨论】:
-
你有 apt 'com.jakewharton:butterknife-compiler:8.2.1' 依赖吗?
-
是的,它在我的 gradle 文件中。
-
@KVISH 你能在你的
module.build中应用像apply plugin: 'android-apt'这样的插件吗?
标签: android android-layout data-binding android-adapter butterknife