亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何從實時數據庫中刪除列表中填充了對象的重復項

如何從實時數據庫中刪除列表中填充了對象的重復項

至尊寶的傳說 2022-09-28 14:26:13
我正在根據從數據庫中獲取數據,然后將數據插入到a中并通過對話框顯示它。userIdlistview我一直在等待的行為是,我將獲取用戶創建的所有交換,并將它們插入到列表中,以便他可以選擇其中一個。但是,只有當他在數據庫中只有一個交換時,代碼才能正常工作,因為它正常顯示。但是,如果他有兩個掉期,那么列表中的掉期將乘以兩個。如果是三次,那么數據將重復三次,依此類推。我不知道我的代碼中的流程是什么,希望有人可以幫助我解決這個問題。如何刪除列表中的重復項? private void fetchChooseList() {    DatabaseReference shiftSwapDb = FirebaseDatabase.getInstance().getReference().child("swaps").child("shift_swaps");    final List<SwapDetails> swapBodyList = new ArrayList<>();    Collections.reverse(swapBodyList);    shiftProfileAdapter = new ShiftProfileAdapter(ProfileActivityShift.this, R.layout.shift_profile_list_item, swapBodyList);    listView = chooseShiftProfileDialog.findViewById(R.id.listShiftProfileChooseDialog);    listView.setAdapter(shiftProfileAdapter);    shiftSwapDb.addChildEventListener(new ChildEventListener() {        @Override        public void onChildAdded(DataSnapshot dataSnapshot, String s) {            if (dataSnapshot.exists()) {                SwapDetails swapDetails = dataSnapshot.getValue(SwapDetails.class);                if (swapDetails.getSwapperID().equals(fromID)) {                    shiftProfileAdapter.add(swapDetails);                }            }        }        @Override        public void onChildChanged(DataSnapshot dataSnapshot, String s) { }        @Override        public void onChildRemoved(DataSnapshot dataSnapshot) { }        @Override        public void onChildMoved(DataSnapshot dataSnapshot, String s) { }        @Override        public void onCancelled(DatabaseError databaseError) { }    });
查看完整描述

2 回答

?
白衣染霜花

TA貢獻1796條經驗 獲得超10個贊

問題解決了。原因是if語句正在交換詳細信息對象中添加整個數據,如果它找到一個用戶ID,然后它找到另一個并再次添加所有這些用戶ID等。


所以我只是在if語句中創建了布洛爾,如果它找到了交換器ID,然后使用插件范圍之外的適配器,則使其成為真。


 shiftSwapDb.addChildEventListener(new ChildEventListener() {

    @Override

    public void onChildAdded(DataSnapshot dataSnapshot, String s) {

        if (dataSnapshot.exists()) {

            SwapDetails swapDetails = dataSnapshot.getValue(SwapDetails.class);

            if (swapDetails.getSwapperID().equals(fromID)) {


hasSwaperID = true;

            }

        }

    }

移位配置文件Adapter.add(swapDetails);


查看完整回答
反對 回復 2022-09-28
?
翻閱古今

TA貢獻1780條經驗 獲得超5個贊

試試這個


@Override

public void onChildAdded(DataSnapshot dataSnapshot, String s) {

    if (dataSnapshot.exists()) {

        SwapDetails swapDetails = dataSnapshot.getValue(SwapDetails.class);

        if (swapDetails.getSwapperID().equals(fromID)) {

            swapBodyList.add(swapDetails);

            shiftProfileAdapter.notifyItemInserted(swapBodyList.length - 1);

        }

    }

}


查看完整回答
反對 回復 2022-09-28
  • 2 回答
  • 0 關注
  • 117 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號