java - 如何修复 .this 和 .setOnItemClickListener 之间的静态/非静态冲突?
问题描述
我希望能够单击我的 recyclerview“计划器”中的信息按钮,这样我就可以在该特定事件/日内看到我的 (firestore) 参与者。
但是我遇到了一个我无法修复的错误。我遇到的最大麻烦是我在片段中工作。所以复制 Youtube 并不总是有效的。+ 我是编码和 java 的新手。
但是当我解决这个问题时:
LesAdapter 内部
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 内部可以在 .setOnItemClickListener 之前使用 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);
}
});
这就是我正在尝试的:
解决方案
错误是尝试调用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);
}
});
推荐阅读
- flutter - 如何在 Flutter 中刷新 AlertDialog?
- scala - Spark在读取csv时向数据框添加列
- laravel - Laravel / Voyager 中的条件面包
- spring - Mockito given().willReturn() 返回零星结果
- react-native - 如何在渲染之前获取文本组件的宽度
- c# - 为什么 EqualityComparer.Default 无法比较字典?
- angular - Angular - rxjs - 将 Observable 数组转换为另一个 Observable 数组
- excel - 使用python将数据写入excel时将点转换为逗号
- amazon-web-services - 启用 KMS 加密后,无法使用 Glue 作业将数据/对象放入 S3 存储桶
- angular - ngFor内的Angular 2+ NgTemplateOutlet