代码之家  ›  专栏  ›  技术社区  ›  Nemanja

自定义类中的snackbar未显示

  •  0
  • Nemanja  · 技术社区  · 6 年前

    myactivity coord.xml:

    <CoordinatorLayout>
       id:coordID
       <RelativeL>
          ...
       <FAB>
    

    rvadapter.java语言

    ...
    @Override
        public void onItemDismiss(int position) {
            ...
            notifyItemRemoved(position);
    
            LayoutInflater inflater = (LayoutInflater) MyActivity.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            View v = inflater.inflate(R.layout.coord, null);
    
            Snackbar.make(v.findViewById(R.id.coordID), "TEXT", Snackbar.LENGTH_LONG).show();
        }
    

    这是一种方法,用于在自定义类(rvadapter.java)中滑动从回收器视图列表中删除项目,删除项目后,应出现snackbar并设置撤消操作。但是,当我删除一个项目时,什么都不会发生。snackbar没有出现。我不太确定我是否正确地设置了视图,但我不知道如何做得不同

    2 回复  |  直到 6 年前
        1
  •  1
  •   Nemanja    6 年前

    我这样解决了:
    在MyActivity中添加

    private static CoordinatorLayout mCoord;
    mCoord = findViewById(R.id.coordID);
    public static View getCoord() { return mCoord; }
    

    在rvadapter.java中

    Snackbar.make(MyActivity.getCoord(), ...
    
        2
  •  0
  •   Mandar Sadye    6 年前

    在我看来,我认为有两个可能的原因不显示snackbar。

    1. 作为参数提供的活动的引用 看法 snackbar.make()的错误。如果是这种情况,那么我建议您通过构造函数将活动的引用传递给适配器,然后按如下方式存储它。

      public class MoviesAdapter extends RecyclerView.Adapter<MyViewHolder> {
      
          private List<Movie> moviesList;
          private MainActivity activity;
      
          MoviesAdapter(MainActivity activity){
              super();
              this.activity = activity;
          }
      
          //continue your remaining work from here
      
      }