gpt4 book ai didi

java - 如何通过点击FAB按钮获取id

转载 作者:行者123 更新时间:2023-12-02 10:46:25 25 4
gpt4 key购买 nike

我正在显示一份订购的食物 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com