【问题标题】:How to add Snackbar where View Class is not directly accessible如何在无法直接访问 View Class 的地方添加 Snackbar
【发布时间】:2020-08-14 16:10:16
【问题描述】:

在我的代码中添加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);

【问题讨论】:

    标签: android android-recyclerview snackbar itemtouchhelper


    【解决方案1】:

    这句话是什么意思?

    Snakbar 的第一个参数(视图)不可用

    您可以从那里调用显示 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");
    
       ...
    }
    

    【讨论】:

    • 感谢它的工作。实际上我无法直接在 ItemTouchHelper 中访问 View 对象
    • 我试图标记但它不起作用。我想我有不止一票反对,这就是为什么它不起作用
    猜你喜欢
    • 2013-12-09
    • 2022-11-17
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多