AlertDialog Builder inside holder.itemView.setOnClickListener onBindViewHolder
AlertDialog Builder inside holder.itemView.setOnClickListener onBindViewHolder
当用户点击 RecyclerView 项目时,我试图从数据库中删除项目,确认对话框打开,如果用户按是,它将从 firebase 中删除项目。
我认为问题是由于上下文的原因,应用程序中没有显示警告对话框,因此我应该在上下文中输入什么才能在屏幕上显示警告对话框
public void onBindViewHolder(@NonNull final DishViewHolderModify holder, int position) {
final Dish dish = dishList.get(position);
holder.textViewDishName.setText(dish.getmName());
Picasso.get().load(dish.getmImageUrl()).networkPolicy(NetworkPolicy.OFFLINE).into(holder.imageViewDishImage, new Callback() {
@Override
public void onSuccess() {
}
@Override
public void onError(Exception e) {
Picasso.get().load(dish.getmImageUrl()).into(holder.imageViewDishImage);
}
});
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d("Click Happen","Yes");
final String dishName = holder.textViewDishName.getText().toString();
new AlertDialog.Builder(v.getContext()) // problem over here
.setTitle("Delete Dish")
.setMessage("Are you sure you want to delete")
.setIcon(R.drawable.ic_delete_forever_black_24dp)
.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
letsDeleteDish(dishName);
}
}).setNegativeButton("No",null);
}
});
}
我认为您的问题是您没有在 AlertDialog.Builder
实例上调用 show()
。我认为您的 Context
论点没有任何问题。
这是生成器的最后一行:
}).setNegativeButton("No",null);
可能这应该看起来像这样:
}).setNegativeButton("No",null)
.show();
当用户点击 RecyclerView 项目时,我试图从数据库中删除项目,确认对话框打开,如果用户按是,它将从 firebase 中删除项目。
我认为问题是由于上下文的原因,应用程序中没有显示警告对话框,因此我应该在上下文中输入什么才能在屏幕上显示警告对话框
public void onBindViewHolder(@NonNull final DishViewHolderModify holder, int position) {
final Dish dish = dishList.get(position);
holder.textViewDishName.setText(dish.getmName());
Picasso.get().load(dish.getmImageUrl()).networkPolicy(NetworkPolicy.OFFLINE).into(holder.imageViewDishImage, new Callback() {
@Override
public void onSuccess() {
}
@Override
public void onError(Exception e) {
Picasso.get().load(dish.getmImageUrl()).into(holder.imageViewDishImage);
}
});
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d("Click Happen","Yes");
final String dishName = holder.textViewDishName.getText().toString();
new AlertDialog.Builder(v.getContext()) // problem over here
.setTitle("Delete Dish")
.setMessage("Are you sure you want to delete")
.setIcon(R.drawable.ic_delete_forever_black_24dp)
.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
letsDeleteDish(dishName);
}
}).setNegativeButton("No",null);
}
});
}
我认为您的问题是您没有在 AlertDialog.Builder
实例上调用 show()
。我认为您的 Context
论点没有任何问题。
这是生成器的最后一行:
}).setNegativeButton("No",null);
可能这应该看起来像这样:
}).setNegativeButton("No",null)
.show();