Android RecyclerView.ViewHolder无法使用ButterKnife绑定视图
我正在使用Android RecyclerView.ViewHolder无法使用ButterKnife绑定视图,android,android-layout,data-binding,android-adapter,butterknife,Android,Android Layout,Data Binding,Android Adapter,Butterknife,我正在使用ButterKnife将我的视图绑定到我的ViewHolder上。我的代码如下: public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> { private List<DataObject> data; public MyAdapter(List<DataObject> data) { this.data = data;
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);
}
}
}
如果我添加以下行:
rowHeaderView = view.findViewById(R.id.row_header_view);
它能够正确地获得视图。但这有什么意义呢?
ButterKnife
在findViewById
可用的地方不可用吗?确保如果您使用了ButterKnife
库以这种方式使用
build.gradle项目文件
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
}
}
然后,在模块级build.gradle中应用'android-apt'
插件,并添加黄油刀依赖项:
apply plugin: 'android-apt'
android {
...
}
dependencies {
compile 'com.jakewharton:butterknife:8.2.1'
apt 'com.jakewharton:butterknife-compiler:8.2.1'
}
2016年10月更新:您可能不再需要apt和android apt插件。Android Gradle插件的2.2版有一个annotationProcessor配置,您应该改用它
在Android studio 2.2以后的版本中,只需在build.gradle模块中添加以下内容:
compile 'com.jakewharton:butterknife:8.4.0'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.4.0'
你有apt'com.jakewharton:butterknife compiler:8.2.1'依赖项吗?是的,它在我的gradle文件中。@KVISH你能在你的模块中应用这样的插件吗apply plugin:'android apt'
?@Nullable
指的是可选的字段。我的都在那里。这个答案不正确。@KVISH你能在你的module.build中应用这样的插件吗apply plugin:'android apt'
。那是不见了。我修好了。如果您更新您的答案,我将接受。@KVISH很高兴帮助您。
compile 'com.jakewharton:butterknife:8.4.0'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.4.0'