Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/218.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android RecyclerView.ViewHolder无法使用ButterKnife绑定视图_Android_Android Layout_Data Binding_Android Adapter_Butterknife - Fatal编程技术网

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'