Android RecyclerView适配器不适用于黄油刀

Android RecyclerView适配器不适用于黄油刀,android,android-studio,android-recyclerview,adapter,butterknife,Android,Android Studio,Android Recyclerview,Adapter,Butterknife,为什么RecyclerView适配器不能与ButterKnife一起使用 它与findViewById合作,但与ButterKnife不合作 适配器类 public class CategoriesAdapter extends RecyclerView.Adapter<CategoriesAdapter.viewHolder>{ Context context; List<CategoriesModels> categoriesModels;

为什么RecyclerView适配器不能与ButterKnife一起使用

它与findViewById合作,但与ButterKnife不合作

适配器类

public class CategoriesAdapter extends RecyclerView.Adapter<CategoriesAdapter.viewHolder>{

    Context context;
    List<CategoriesModels> categoriesModels;

    public CategoriesAdapter(Context context,List<CategoriesModels> categoriesModels){
        this.context = context;
        this.categoriesModels = categoriesModels;
    }

    @Override
    public viewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.row_categories, viewGroup, false);
        viewHolder viewHolder = new viewHolder(view);
        return viewHolder;
    }

    @Override
    public void onBindViewHolder(@NonNull viewHolder viewHolder, int i) {

    }

    @Override
    public int getItemCount() {
        return categoriesModels.size();
    }

    class viewHolder extends RecyclerView.ViewHolder {
        @BindView(R.id.img_flag)
        ImageView img_flag;
        @BindView(R.id.txt_title)
        TextView txt_title;
        @BindView(R.id.img_correct)
        ImageView img_correct;

        public viewHolder(View view) {
            super(view);
            ButterKnife.bind(context,view);
        }

    }

}
公共类CategoriesAdapter扩展了RecyclerView.Adapter{
语境;
列出分类模型;
公共类别适配器(上下文、列表类别模型){
this.context=上下文;
this.categoriesModels=categoriesModels;
}
@凌驾
public viewHolder onCreateViewHolder(@NonNull ViewGroup ViewGroup,int i){
View View=LayoutInflater.from(viewGroup.getContext()).flate(R.layout.row_类别,viewGroup,false);
viewHolder viewHolder=新的viewHolder(视图);
返回视图持有者;
}
@凌驾
public void onBindViewHolder(@NonNull viewHolder viewHolder,int i){
}
@凌驾
public int getItemCount(){
返回categoriesModels.size();
}
类viewHolder扩展了RecyclerView.viewHolder{
@BindView(R.id.img_标志)
图像视图img_标志;
@BindView(R.id.txt_标题)
文本视图txt_标题;
@BindView(R.id.img_正确)
图像视图img_正确;
公共视图持有者(视图){
超级(视图);
绑定(上下文、视图);
}
}
}
主要活动类

public class CategoriesActivity extends AppCompatActivity {

    @BindView(R.id.txt_select_language)
    TextViewFont txt_select_language;
    @BindView(R.id.rv_categories)
    RecyclerView rv_categories;

    List<CategoriesModels> categoriesModels = new ArrayList<>();
    CategoriesAdapter categoriesAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_categories);
        ButterKnife.bind(CategoriesActivity.this);
        //show data
        ShowDate();
    }

    private void ShowDate() {
        Retrofit retrofit = new Retrofit.Builder().baseUrl("http://*****").addConverterFactory(GsonConverterFactory.create()).build();
        RetrofitService retrofitService = retrofit.create(RetrofitService.class);
        Call<List<CategoriesModels>> call = retrofitService.get_categories();
        call.enqueue(new Callback<List<CategoriesModels>>() {
            @Override
            public void onResponse(Call<List<CategoriesModels>> call, Response<List<CategoriesModels>> response) {
                List<CategoriesModels> list = response.body();
                for (CategoriesModels i : list) {
                    categoriesModels.add(new CategoriesModels(i.getId(), i.getTitle(), i.getPhoto(), i.getShortcut()));
                }
                categoriesAdapter = new CategoriesAdapter(CategoriesActivity.this, categoriesModels);
                rv_categories.setLayoutManager(new LinearLayoutManager(CategoriesActivity.this, LinearLayoutManager.VERTICAL, false));
                rv_categories.setAdapter(categoriesAdapter);
            }

            @Override
            public void onFailure(Call<List<CategoriesModels>> call, Throwable t) {

            }
        });
    }

}
公共类分类活动扩展了AppCompativeActivity{
@BindView(R.id.txt\u选择\u语言)
text查看字体txt_选择_语言;
@BindView(R.id.rv_类别)
RecyclerView rv_类别;
List categoriesModels=new ArrayList();
分类适应器分类适应器;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_categories);
ButterKnife.bind(分类活动,this);
//显示数据
ShowDate();
}
私有void ShowDate(){
改型改型=新建改型.Builder().baseUrl(“http://****”).addConverterFactory(GsonConverterFactory.create()).build();
改装服务改装服务=改装.create(改装服务.class);
Call Call=service.get_categories();
call.enqueue(新回调(){
@凌驾
公共void onResponse(调用、响应){
List=response.body();
对于(分类模型i:列表){
添加(新的分类模型(i.getId(),i.getTitle(),i.getPhoto(),i.getShortcut());
}
categoriesAdapter=新的categoriesAdapter(CategoriesActivity.this,categoriesModels);
rv_categories.setLayoutManager(新的LinearLayoutManager(CategoriesActivity.this,LinearLayoutManager.VERTICAL,false));
rv_类别。设置适配器(类别适配器);
}
@凌驾
失败时公共无效(调用调用,可丢弃的t){
}
});
}
}

在提出这个主题之前,我做了很多尝试,但我还没有找到解决方案,取景框中的上下文就是这样

ButterKnife.bind(this,view);
这是指包含要注入的视图的ViewHolder类\

看看巴特刀的例子。

来自文档:public static Unbinder bind(java.lang.Object target,android.view.view source)BindView指定目标中使用源视图作为视图根的注释字段和方法。参数:target-视图绑定的目标类。source-查看将在其上查找ID的根目录。