"Cannot resolve symbol ItemClickListener"
"Cannot resolve symbol ItemClickListener"
我可以知道为什么它向我显示 "Cannot resolve symbol ItemClickListener" 的错误吗?我是否需要添加库或其他东西来解决这个问题,或者我不应该在这里声明它?
public static class FoodViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{
private ItemClickListener itemClickListener;
public void setItemClickListener(ItemClickListener itemClickListener) {
this.itemClickListener = itemClickListener;
}
View view;
public FoodViewHolder (View v){
super(v);
view= v;
}
public void setName(String title){
TextView post_title = (TextView)view.findViewById(R.id.Menu_Name);
post_title.setText(title);
}
public void setImage(Context ctx, String image){
ImageView menuImage = (ImageView) view.findViewById(R.id.Menu_Image);
Picasso.with(ctx).load(image).into(menuImage);
}
@Override
public void onClick(View v) {
}
}
您可以将点击侦听器设置为您想要的任何视图您不需要将其声明为单独的
yourView.setOnClickListener(this);
并在您的 onClick(View v) 中添加您想要的代码,例如:
if(v==imageView){
//write your code here
}
一般来说,RecyclerView
我们创建一个接口来处理点击事件。与普通的 Button Click 不同,RecyclerView Click 事件不能直接处理。由于 RecyclerView 是适配器(视图的数据提供者),您不能直接从此处处理项目点击并更新视图。为此,您需要一个单独的接口,在您的情况下为 ItemClickListener
(在您的项目中单独创建一个接口文件)。在该接口中,您需要声明一个方法,例如像这样的方法
public Interface ItemClickListener{
void onRecyclerViewItemClicked(int position);
}
为您的视图创建一个 OnClickListener(它存在于单行中。例如:图像、文本等);@Override
public void onBindViewHolder(ViewHolder holder, int position) {
holder.myText.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
itemClickListener.onRecyclerViewItemClicked(position);
//itemClickListener is the Interface Reference Variable
}
});
}
并且在您的 Activity 中,您需要像
一样实现此接口
public class YourActivity extends AppCompatActivity implements ItemClickListener {
....
....
protected void onCreate(Bundle savedInstanceState) {
...
...
}
@Override
public void onRecyclerViewItemClicked(int position) {
//You will get the position of the Item Clicked over recycler view
//You can handle as per your requirement
}
}
执行此操作后,您将监听 recyclerview 的点击事件 activity。然后你可以相应地处理它。
如果您还有疑问,请参阅参考资料:
我可以知道为什么它向我显示 "Cannot resolve symbol ItemClickListener" 的错误吗?我是否需要添加库或其他东西来解决这个问题,或者我不应该在这里声明它?
public static class FoodViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{
private ItemClickListener itemClickListener;
public void setItemClickListener(ItemClickListener itemClickListener) {
this.itemClickListener = itemClickListener;
}
View view;
public FoodViewHolder (View v){
super(v);
view= v;
}
public void setName(String title){
TextView post_title = (TextView)view.findViewById(R.id.Menu_Name);
post_title.setText(title);
}
public void setImage(Context ctx, String image){
ImageView menuImage = (ImageView) view.findViewById(R.id.Menu_Image);
Picasso.with(ctx).load(image).into(menuImage);
}
@Override
public void onClick(View v) {
}
}
您可以将点击侦听器设置为您想要的任何视图您不需要将其声明为单独的
yourView.setOnClickListener(this);
并在您的 onClick(View v) 中添加您想要的代码,例如:
if(v==imageView){
//write your code here
}
一般来说,RecyclerView
我们创建一个接口来处理点击事件。与普通的 Button Click 不同,RecyclerView Click 事件不能直接处理。由于 RecyclerView 是适配器(视图的数据提供者),您不能直接从此处处理项目点击并更新视图。为此,您需要一个单独的接口,在您的情况下为 ItemClickListener
(在您的项目中单独创建一个接口文件)。在该接口中,您需要声明一个方法,例如像这样的方法
public Interface ItemClickListener{
void onRecyclerViewItemClicked(int position);
}
为您的视图创建一个 OnClickListener(它存在于单行中。例如:图像、文本等);@Override
public void onBindViewHolder(ViewHolder holder, int position) {
holder.myText.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
itemClickListener.onRecyclerViewItemClicked(position);
//itemClickListener is the Interface Reference Variable
}
});
}
并且在您的 Activity 中,您需要像
一样实现此接口public class YourActivity extends AppCompatActivity implements ItemClickListener {
....
....
protected void onCreate(Bundle savedInstanceState) {
...
...
}
@Override
public void onRecyclerViewItemClicked(int position) {
//You will get the position of the Item Clicked over recycler view
//You can handle as per your requirement
}
}
执行此操作后,您将监听 recyclerview 的点击事件 activity。然后你可以相应地处理它。
如果您还有疑问,请参阅参考资料: