You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修复RecycleView选中项添加到Firebase时误传全部项的问题?

解决RecyclerView选中项仅添加到Firebase的问题

我看了你的代码,问题很明显——你往Firebase写入数据时用了整个数据源列表mfoodinfo,而不是你选中的那单个项!

你看这段关键代码:

databaseReference.child(selectedKey).setValue(mfoodinfo);

这里的mfoodinfo是你RecyclerView的完整数据源,所以执行这行代码时,会把所有列表项都写入Firebase,而不是你点击选中的那一项。

修复起来很简单,只需要把mfoodinfo替换成你已经获取到的selectedItem即可,修改后的完整代码如下:

@Override 
public void onAddClick(int position) { 
    FoodInfo selectedItem = mfoodinfo.get(position); 
    final String selectedKey = selectedItem.getFoodname(); 
    StorageReference imageRef = firebaseStorage.getReferenceFromUrl(selectedItem.getImageUrl()); 
    imageRef.delete().addOnSuccessListener(new OnSuccessListener<Void>() { 
        @Override 
        public void onSuccess(Void aVoid) { 
            final DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference("Order"); 
            // 替换为选中的单个项,而非整个列表
            databaseReference.child(selectedKey).setValue(selectedItem); 
            Toast.makeText(Menu.this, "Order Successful!!", Toast.LENGTH_SHORT).show(); 
        } 
    }); 
}

这样修改后,点击添加按钮时就只会把你选中的那单个FoodInfo对象写入Firebase的Order节点下对应的selectedKey路径中,不会再把整个列表都添加进去了。

内容的提问来源于stack exchange,提问作者Choy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:02:10