java - 回收站视图中的小吃店
问题描述
如何在页面底部显示小吃栏?我想在点击喜欢时显示小吃栏。我在recycleview(crdLayout)的一个项目中使用了snackbar,所以它显示在每个项目的底部,这里是代码:
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, int position) {
itemHolder.like.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Snackbar snackbar = Snackbar
.make(itemHolder.crdLayout, "liked", Snackbar.LENGTH_LONG)
snackbar1.show();
}
});
小吃栏每次都不会在页面底部弹出,而是出现在每个卡片视图的底部
解决方案
在您的Snackbar
中,您将参数指定为itemholder.cardLayout
。因此,小吃吧将出现在卡片布局下方。您应该提供页面的根视图以使其显示在页面底部
有两种方法可以实现这一目标。一种是rootview
在类的构造函数中RecyclerViewAdapter
传递 ,并将参数传递给Snackbar
. Activity
另一种方法是在您的或Fragment
调用您的类的类中使用回调方法RecyclerViewAdapter
。
对于第一种方法,您只需将rootView
页面的作为构造函数参数传递,并将参数传递给Snackbar
.
对于第二种方法,可以在RecyclerViewAdapter
类中创建接口,在构造函数中将接口实例作为参数传递,在接口中创建方法并在项目被点击时通知方法。然后你可以Snackbar
在你的Activity
课堂上展示。看下面的代码,
public class YourActivity implements RecyclerViewAdapter.CallbackListener{
View rootView;
@Override
protected void onCreate(Bundle savedInstanceState){
//
rootView = findViewById(R.id.my_root_view);
//
//
RecyclerViewAdapter recyclerViewAdapter = new RecyclerViewAdapter(this);
//
//
}
@Override
public void onItemClicked(){
Snackbar snackbar = Snackbar.make(rootView, "liked", Snackbar.LENGTH_LONG);
snackbar.show();
}
}
你的 RecyclerViewAdapter 类将是,
public class RecyclerViewAdapter {
CallbackListener listener;
public RecyclerViewAdapter (CallbackListener listener){
this.listener = listener;
}
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, int position) {
itemHolder.like.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
listener.onItemClicked();
}
});
public interface CallbackListener{
void onItemClicked();
}
}
虽然第一种方法很简单,但第二种方法给你更多的封装、更简洁的代码和对代码的更多控制。
推荐阅读
- java - 异常说明:xxx 使用非实体 xx 作为关系属性中的目标实体 [方法 xxx]
- r - 通过 data.table 中的可变间隔计算股票的回报
- android - 类似于单选按钮的按钮交互的良好代码设计是什么?
- r - 在 ggplot 版本 3+ 中反转日期时间(POSIXct 数据)轴
- java - 无法使用 PHP-Java Bridge 从 php 运行 java 类
- python - 不同长度的两个数据帧的列之间的余弦相似度?
- scala - 如何在 Scala 中将多个 case 表达式链接在一起
- javascript - 如何单击 selenium webdriver 中的剑道下拉菜单?
- xpath - XPath 从嵌套的 Div 中提取特定文本
- php - 网络服务 SOAP 中的参数