Android RecyclerView适配器不适用于黄油刀
为什么RecyclerView适配器不能与ButterKnife一起使用 它与findViewById合作,但与ButterKnife不合作 适配器类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;
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的根目录。