自定义 class 的 Snackbar 未显示
Snackbar from custom class not showing
我的活动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();
}
这是一种从回收站视图列表中滑动删除项目的方法,在自定义 class (RVAdapter.java) 中删除后,应该会出现 Snackbar 并为 UNDO 设置操作。但是,当我删除一个项目时,没有任何反应。 Snackbar 没有出现。我不太确定我是否正确设置了视图,但我不知道如何做不同的事情
在我看来,不显示 snackbar 可能有两个原因。
- 其他视图的高度太高,无法显示 snackbar。检查 activity.
中所有视图的高度
您作为 Snackbar.make() 的参数 view 提供的 activity 的引用可能不正确。如果是这种情况,那么我建议您通过构造函数将 activity 的引用传递给适配器,然后按如下方式存储它。
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
}
我本来想发表评论并要求提供更多详细信息,但由于我的声誉不佳,我没有被允许这样做。希望这些建议对你有用。
感谢 Mike M。我是这样解决的:
在 MyActivity 添加
private static CoordinatorLayout mCoord;
mCoord = findViewById(R.id.coordID);
public static View getCoord() { return mCoord; }
并在 RVAdapter.java
Snackbar.make(MyActivity.getCoord(), ...
我的活动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();
}
这是一种从回收站视图列表中滑动删除项目的方法,在自定义 class (RVAdapter.java) 中删除后,应该会出现 Snackbar 并为 UNDO 设置操作。但是,当我删除一个项目时,没有任何反应。 Snackbar 没有出现。我不太确定我是否正确设置了视图,但我不知道如何做不同的事情
在我看来,不显示 snackbar 可能有两个原因。
- 其他视图的高度太高,无法显示 snackbar。检查 activity. 中所有视图的高度
您作为 Snackbar.make() 的参数 view 提供的 activity 的引用可能不正确。如果是这种情况,那么我建议您通过构造函数将 activity 的引用传递给适配器,然后按如下方式存储它。
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 }
我本来想发表评论并要求提供更多详细信息,但由于我的声誉不佳,我没有被允许这样做。希望这些建议对你有用。
感谢 Mike M。我是这样解决的:
在 MyActivity 添加
private static CoordinatorLayout mCoord;
mCoord = findViewById(R.id.coordID);
public static View getCoord() { return mCoord; }
并在 RVAdapter.java
Snackbar.make(MyActivity.getCoord(), ...