java - 为什么对接口方法的调用不适用于对接口实例的大写名称引用?
问题描述
请帮助我,由于这个错误,我无法运行该程序。
onClicked(int)
不能从静态上下文引用非静态方法。
代码
public class ProfileAdapter extends RecyclerView.Adapter<ProfileAdapter.myViewHolder> {
ArrayList<Profile_Info> infos;
Context context;
MyClickedInterface myClickedInterface;
public ProfileAdapter(ArrayList<Profile_Info> infos, Context context, MyClickedInterface myClickedInterface) {
this.infos = infos;
this.context = context;
this.myClickedInterface = myClickedInterface;
}
@NonNull
@Override
public ProfileAdapter.myViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(context).inflate(R.layout.my_profile,parent,false);
return new myViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull ProfileAdapter.myViewHolder holder, int position) {
holder.textView.setText(infos.get(position).getAppName());
holder.imageView.setImageResource(infos.get(position).getImageResource());
}
@Override
public int getItemCount() {
return infos.size();
}
public class myViewHolder extends RecyclerView.ViewHolder{
TextView textView;
ImageView imageView;
public myViewHolder(@NonNull View itemView) {
super(itemView);
textView =(TextView) itemView.findViewById(R.id.text);
imageView = (ImageView) itemView.findViewById(R.id.image);
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
MyClickedInterface.onClicked(getAdapterPosition());
}
});
}
}
interface MyClickedInterface{
void onClicked (int position);
}
}
解决方案
您正在尝试onClicked
通过您的 interfaceMyClickedInterface
调用,而不是使用实例调用它myClickedInterface
代替
MyClickedInterface.onClicked(getAdapterPosition());
和
myClickedInterface.onClicked(getAdapterPosition());
推荐阅读
- reactjs - 如何将我的 fork React 模块安装到 Symfony 4 中?
- c - 选择结构元素时有快捷方式吗?
- django - 包含引导程序后查看功能无法正常工作
- python - python multiprocessing:我可以构建一个将参数列表作为输入的进程池吗?
- sql - 带有 SELECT JOIN 的 DELETE 命令
- c - 指向数组的最小值和最大值的指针
- python - 计算熊猫数据框选定列的加权和的推荐方法是什么?
- vuex - Buefy、Vuex、Toast:找不到声明文件
- android - 如何只将用户数据写入firebase数据库一次?
- c - C 不确定要正确释放什么