- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在显示一份订购的食物 list 。 FloatingActionButton 放置在有序列表中的每个食品项目(productId)上,我想显示一个评级警报对话框,让用户在单击 FloatingActionButton 后对食品进行评级。当用户单击 Fab 按钮时,如何获取每个 ProductId?因为我需要根据productId在另一个食品详细信息页面显示评级。我只是一个初学者学习所以不太明白。谢谢
OrderDetailAdapter.java
class MyViewHolder extends RecyclerView.ViewHolder {
public TextView name, quantity, price, discount;
public FloatingActionButton btnRating;
public MyViewHolder(View itemView) {
super(itemView);
name = (TextView)itemView.findViewById(R.id.product_name);
quantity = (TextView)itemView.findViewById(R.id.product_quantity);
price = (TextView)itemView.findViewById(R.id.product_price);
discount = (TextView)itemView.findViewById(R.id.product_discount);
btnRating = (FloatingActionButton)itemView.findViewById(R.id.btn_rating);
}
}
public class OrderDetailAdapter extends RecyclerView.Adapter<MyViewHolder>{
List<Order> myOrders;
private OnRatingButtonClickListener mOnRatingClickListener;
public OrderDetailAdapter(List<Order> myOrders, OnRatingButtonClickListener listener) {
this.myOrders = myOrders;
this.mOnRatingClickListener = listener;
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(parent.getContext())
.inflate(R.layout.order_detail_layout,parent,false);
return new MyViewHolder(itemView);
}
public interface OnRatingButtonClickListener
{
void onRatingClick(String productId);
}
@Override
public void onBindViewHolder(final MyViewHolder holder, int position) {
final Order order = myOrders.get(position);
holder.name.setText(String.format("Name: %s", order.getProductName()));
holder.quantity.setText(String.format("Quantity: %s", order.getQuantity()));
holder.price.setText(String.format("Price: %s", order.getPrice()));
holder.discount.setText(String.format("Discount: %s", order.getDiscount()));
holder.btnRating.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mOnRatingClickListener.onRatingClick(order.getProductId());
}
});
}
@Override
public int getItemCount() {
return myOrders.size();
}
}
订单详细信息.java
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_order_detail);
//Firebase
database = FirebaseDatabase.getInstance();
foods = database.getReference("Food");
ratingTbl = database.getReference("Rating");
//Initialize view
order_id = (TextView)findViewById(R.id.order_id);
order_phone = (TextView)findViewById(R.id.order_phone);
order_total = (TextView)findViewById(R.id.order_total);
lstFoods = (RecyclerView)findViewById(R.id.lstFoods);
lstFoods.setHasFixedSize(true);
layoutManager = new LinearLayoutManager(this);
lstFoods.setLayoutManager(layoutManager);
btnRating = (FloatingActionButton)findViewById(R.id.btn_rating);
if(getIntent() != null) {
order_id_value = getIntent().getStringExtra("OrderId");
foodId = getIntent().getStringExtra("FoodId");
//Set value
order_id.setText(order_id_value);
order_phone.setText(Common.currentRequest.getPhone());
order_total.setText(Common.currentRequest.getTotal());
OrderDetailAdapter adapter = new OrderDetailAdapter(Common.currentRequest.getFoods(),this);
//OrderDetailAdapter adapter = new OrderDetailAdapter(this);
adapter.notifyDataSetChanged();
lstFoods.setAdapter(adapter); }
@Override
public void onRatingClick(String productId) {
btnRating.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
showRatingDialog();
}
});
}
private void showRatingDialog() {
new AppRatingDialog.Builder()
.setPositiveButtonText("Submit")
.setNegativeButtonText("Cancel")
.setNoteDescriptions(Arrays.asList("Very Bad","Bad","Quite OK","Very Good","Excellent"))
.setDefaultRating(1)
.setTitle("Rate this food")
.setDescription("Kindly give your ratings and comment")
.setTitleTextColor(R.color.transparentBlack)
.setDescriptionTextColor(R.color.transparentBlack)
.setHint("Please write your comment here...")
.setHintTextColor(R.color.fbutton_color_midnight_blue)
.setCommentTextColor(android.R.color.black)
.setCommentBackgroundColor(android.R.color.white)
.setWindowAnimation(R.style.RatingDialogFadeAnim)
.create(OrderDetail.this)
.show();
}
最佳答案
您可以使用接口(interface)来获取 Activity 上 float 操作按钮的回调,如下所示:-
在你的适配器类中
public interface OnRatingButtonClickListener{
void onRatingClick(int productId);
}
您将在适配器的构造函数中注册此接口(interface)对象,如下所示:-
private OnRatingButtonClickListener mOnRatingClickListener;
public OrderAdapter(OnRatingButtonClickListener listener){
this.mOnRatingClickListener = listener;
}
在 onBindViewHolder 中,您将执行以下操作:-
holder.btnRating.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View view){
//interface object
mOnRatingClickListener.onRatingClick(order.getProductId());
});
并在您的 Activity 中实现此界面并显示您的评分对话框。你必须像这样设置适配器:-
OrderAdapter adapter = new OrderAdapter(this);
并在您的 Activity 中实现接口(interface),您将在 Activity 中获得如下方法:-
@Override
public onRatingClick(int productId){
// here you will get the id of your product and you can show dialog here
}
如有任何疑问,可以询问。
关于java - 如何通过点击FAB按钮获取id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52531227/
出现在 python 2.7.8 中。 3.4.1 不会发生这种情况。 示例: >>> id(id) 140117478913736 >>> id(id) 140117478913736 >>> id
好吧,我对动态创建的控件的 ID 很困惑。 Public Class TestClass Inherits Panel Implements INamingContainer
我收到下面的错误,说有堆栈溢出。发生这种情况是因为带有 IN (id, id, id...id) 的 SQL 语句有大量参数。有没有什么办法解决这一问题?这是在我使用 Eclipse 的本地环境中发生
为什么 CPython(不知道其他 Python 实现)有以下行为? tuple1 = () tuple2 = ()
为什么 CPython(对其他 Python 实现一无所知)有以下行为? tuple1 = () tuple2 = ()
非常简单的问题:当我有一个持久对象时,它通常有一个名为 ID 的属性(对于抽象类)。 那么..命名约定是ID还是Id? 例如。 public int ID { get; set; } 或 public
知道为什么我会收到此错误,我已经尝试了所有命名约定(小写/大写) 我正在使用 Vaadin,这是我的代码片段: public class Usercontainer extends BeanI
为什么 CPython(不知道其他 Python 实现)有以下行为? tuple1 = () tuple2 = ()
我需要改变表的所有主键 UPDATE TODO SET id = id + 1 但我做不到(Demo 来自 Ahmad Al-Mutawa 的回答)描述了原因。主键不能这样改。 我也不能根据这是 sq
我正在尝试列出与用户相关的讨论列表。 想象一下,如果你愿意的话: posts -------------------------------------------------------------
我有一个表,其中包含一些具有自己的 ID 和共享 SKU key 的文章。我尝试使用左连接进行查询,并使用组结果获取从查询返回的所有 id。 我的数据结构是这样的: id - name -
在下表People中: id name 1 James 2 Yun 3 Ethan 如果我想找到最大 ID,我可以运行此查询 select max(id) id from People; 结果是
我正在产品页面上创建评论模块,其中显示垃圾评论选项,并显示 onclick 显示和隐藏弹出窗口。现在它在单个评论中工作正常但是当评论是两个时它同时打开两个因为类是相同的。现在这就是为什么我想要获取父
根据 REST 哲学,PUT操作应该(取自维基百科): PUT http://example.com/resources/142 Update the address member of the co
我想知道如何在使用 PHP 或 JavaScript 进行身份验证后从 Google Analytics 获取 Property Id、View Id 和 Account Id?因为我希望能够将它们存
我想使用所选按钮的 ID 进行删除。但我不知道如何从中获取/获取 id。我尝试了 this.id 但不起作用。 这是我创建按钮的地方: var deleteEmployer= document.cre
我有一个具有以下结构的表“表” ID LinkedWith 12 13 13 12 14 13 15 14 16
请不要在未阅读问题的情况下将问题标记为重复。我确实发布了一个类似的问题,但 STACKOVERFLOW 社区成员要求我单独重新发布修改后的问题,因为考虑到一个小而微妙的修改,解决方案要复杂得多。 假设
在 Android Studio 中,我创建了一个 Person.java 类。我使用Generate 创建了getter 和setter 以及构造函数。 这是我的 Person.java 类: pu
如何在 jQuery 中制作这样的东西: //这是显示的主体 ID //当我悬停 #hover-id 时,我希望 #principal-id 消失并更改 。但是当我将光标放在 #this-id 上时
我是一名优秀的程序员,十分优秀!