首页 > 解决方案 > 为什么对接口方法的调用不适用于对接口实例的大写名称引用?

问题描述

请帮助我,由于这个错误,我无法运行该程序。

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);
    }
}

标签: javaandroidandroid-recyclerview

解决方案


您正在尝试onClicked通过您的 interfaceMyClickedInterface调用,而不是使用实例调用它myClickedInterface

代替

MyClickedInterface.onClicked(getAdapterPosition());

myClickedInterface.onClicked(getAdapterPosition());

推荐阅读