如何解决如何根据 Firebase 上的字段控制按钮的可见性
我正在尝试在我的应用程序中创建一个奖励页面。如果用户在我的 Firebase 中拥有 Less or Equal to
字段数 BloodDonated
,则该项目的按钮将可用。物品本身包含用户领取奖励所需的要求。
在下面,我无法领取最后一个奖励,因为它需要 20
而用户只有 12
,在这种情况下,献血量。我如何让用户看不到最后一个奖励的 Button
?
相关图片:
我的 Firebase:
我的适配器
public class RewardAdapter extends FirestoreRecyclerAdapter<RewardModel,RewardAdapter.RewardViewHolder> {
public RewardAdapter(@NonNull FirestoreRecyclerOptions<RewardModel> options) {
super(options);
}
@Override
protected void onBindViewHolder(@NonNull RewardAdapter.RewardViewHolder holder,int position,@NonNull RewardModel model) {
holder.rank.setText(String.valueOf(position + 1));
Double dq = model.getDonationReq();
holder.donationrequired.setText(String.format("%.0f",dq));
holder.rewardDescription.setText(model.getRewardDesc());
holder.claim_btn.setonClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//
}
});
}
@NonNull
@Override
public RewardAdapter.RewardViewHolder onCreateViewHolder(@NonNull ViewGroup parent,int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(com.example.loginregisterfire.R.layout.list_rewards_single,parent,false);
return new RewardViewHolder(view);
}
public class RewardViewHolder extends RecyclerView.ViewHolder {
TextView rank;
TextView donationrequired;
TextView rewardDescription;
Button claim_btn;
public RewardViewHolder(@NonNull View itemView) {
super(itemView);
rank = itemView.findViewById(R.id.rewards_rank);
donationrequired = itemView.findViewById(R.id.single_reward_amount);
rewardDescription = itemView.findViewById(R.id.single_reward_desc);
claim_btn = itemView.findViewById(R.id.claim_btn);
}
}
}
解决方法
您可以通过将用户值与 20 进行比较来切换 onBindViewHolder()
内的按钮可见性
@Override
protected void onBindViewHolder(@NonNull RewardAdapter.RewardViewHolder holder,int position,@NonNull RewardModel model) {
holder.rank.setText(String.valueOf(position + 1));
Double dq = model.getDonationReq();
holder.donationRequired.setText(String.format("%.0f",dq));
holder.rewardDescription.setText(model.getRewardDesc());
holder.claim_btn.setVisibility(dq >= 20 ? View.VISIBLE : View.GONE); // <<< Here is the change
holder.claim_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//
}
});
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。