如何在无法直接访问 View Class 的地方添加 Snackbar
How to add Snackbar where View Class is not directly accessible
我在代码中添加 Snackbar
时遇到问题。其实我想在 ItemTouchHelper
对象中显示一个 Snackbar
。我正在使用 ItemTouchHelper
删除 swipe
上的项目,然后显示 Snackbar
该项目是 removed
。如何在我无权访问 View 对象的地方添加 Snakbar。
final ItemTouchHelper itemTouchHelper = new ItemTouchHelper(new ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT) {
@Override
public boolean onMove(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, @NonNull RecyclerView.ViewHolder target) {
return false;
}
@Override
public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction) {
//here I want to add a Snackbar but i don't have access to View object
int currentPosition = viewHolder.getAdapterPosition();
Item item = itemList.get(currentPosition);
int id = item.getId();
databseHandler.deleteItem(id);
itemList.remove(viewHolder.getAdapterPosition());
recyclerViewAdapters.notifyItemRemoved(viewHolder.getAdapterPosition());
}
});
itemTouchHelper.attachToRecyclerView(recyclerView);
这句话是什么意思?
first parameter(View) of Snakbar is not available
您可以从那里调用显示 Snackbar 的方法,并使用 Activity 布局的根视图作为 Snackbar 的参数。
private void showSnackbar(String message) {
View rootView = findViewById(android.R.id.content);
if(rootView != null) {
Snackbar.make(rootView, message, Snackbar.LENGTH_SHOW).show();
}
}
您可以从回调中调用它:
@Override
public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction) {
//here I want to add a Snackbar but first parameter(View) of Snakbar is not available
showSnackbar("Your message");
...
}
我在代码中添加 Snackbar
时遇到问题。其实我想在 ItemTouchHelper
对象中显示一个 Snackbar
。我正在使用 ItemTouchHelper
删除 swipe
上的项目,然后显示 Snackbar
该项目是 removed
。如何在我无权访问 View 对象的地方添加 Snakbar。
final ItemTouchHelper itemTouchHelper = new ItemTouchHelper(new ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT) {
@Override
public boolean onMove(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, @NonNull RecyclerView.ViewHolder target) {
return false;
}
@Override
public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction) {
//here I want to add a Snackbar but i don't have access to View object
int currentPosition = viewHolder.getAdapterPosition();
Item item = itemList.get(currentPosition);
int id = item.getId();
databseHandler.deleteItem(id);
itemList.remove(viewHolder.getAdapterPosition());
recyclerViewAdapters.notifyItemRemoved(viewHolder.getAdapterPosition());
}
});
itemTouchHelper.attachToRecyclerView(recyclerView);
这句话是什么意思?
first parameter(View) of Snakbar is not available
您可以从那里调用显示 Snackbar 的方法,并使用 Activity 布局的根视图作为 Snackbar 的参数。
private void showSnackbar(String message) {
View rootView = findViewById(android.R.id.content);
if(rootView != null) {
Snackbar.make(rootView, message, Snackbar.LENGTH_SHOW).show();
}
}
您可以从回调中调用它:
@Override
public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction) {
//here I want to add a Snackbar but first parameter(View) of Snakbar is not available
showSnackbar("Your message");
...
}