如何修复.this和.setonitemclicklistener之间的静态/非静态冲突?

bprjcwpo  于 2021-06-29  发布在  Java
关注(0)|答案(1)|浏览(311)

我希望能够在我的recyclerview“planner”中单击一个info按钮,这样我就可以看到我的(firestore)参与者在特定的事件/日期中。
但我遇到了一个我无法纠正的错误。我遇到的最大问题是我在碎片中工作。所以复制youtube并不总是有效的我对编码和java还不熟悉。
我想让它成为非静态的
但当我解决这个问题时:
它想让它再次静止
内部适配器

public LesViewHolder(@NonNull View itemView){
        super(itemView);

        Lijst_Soort = itemView.findViewById(R.id.idLes);
        Lijst_Waar = itemView.findViewById(R.id.idWaar);
        Lijst_Wanneer = itemView.findViewById(R.id.idWanneer);
        btnInfo = itemView.findViewById(R.id.btnInfo);

        btnInfo.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
              int position = getAdapterPosition();
                if(position !=RecyclerView.NO_POSITION && listener !=null){
                    listener.onItemClick(getSnapshots().getSnapshot(position), position );
                }
            }
        });
}

public interface OnItemClickListener{
    void onItemClick(DocumentSnapshot documentSnapshot, int position);
    }

    public void setOnItemClickListener(OnItemClickListener listener){
    this.listener = listener;
    }

在homefragment内部,以前使用lesadapter.setonitemclicklistener可能是错误的吗?

LesAdapter.setOnItemClickListener(new LesAdapter.OnItemClickListener() {
        @Override
        public void onItemClick(DocumentSnapshot documentSnapshot, int position) {
            String wanneer = documentSnapshot.getString("Wanneer");

            Intent intent = new Intent(getActivity(), Deelnamelijst.class);
            intent.putExtra("Welke les", wanneer);
            startActivity(intent);
        }
    });

这就是我所尝试的:
https://www.youtube.com/watch?v=3wr4qaivucw
https://www.youtube.com/watch?v=zxogg2xtjzu

aemubtdh

aemubtdh1#

错误是试图呼叫 LesAdapter.setOnItemClickListener 假设 setOnItemClickListener 方法是一个静态方法,因此可以在不创建示例的情况下调用它。
以你为例, setOnItemClickListener 不是静态方法,因此要调用它,需要 LesAdapter . 所以用你喜欢的示例

LesAdapter lesAdapter = new LesAdapter();

lesAdapter.setOnItemClickListener(new LesAdapter.OnItemClickListener() {
        @Override
        public void onItemClick(DocumentSnapshot documentSnapshot, int position) {
            String wanneer = documentSnapshot.getString("Wanneer");

            Intent intent = new Intent(getActivity(), Deelnamelijst.class);
            intent.putExtra("Welke les", wanneer);
            startActivity(intent);
        }
    });

相关问题