首页 > 解决方案 > 当我更新数据时,它会在应用程序火力库中重复相同的数据

问题描述

我在我的应用程序中使用 firebase 实时数据库列出我的数据。这些数据不断更新。但是当数据在firebase中更新一次时,第二个相同的数据会在我的应用程序中形成。每次更新列表数据都会增加 1。我是说; firebase 实时数据库中有 1 条数据,当该数据更新时,它继续显示与 2-3-4-5-6 相同的数据。

这是我的代码:

  mDatabaseReference = FirebaseDatabase.getInstance().getReference();

    trackItems = new ArrayList<Track>();

    adapter = new TracksAdapter(this, trackItems);
    myListView.setAdapter(adapter);
    myListView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
    myListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long arg3) {
            pos = position;
            myListView.setItemChecked(position, true);

        }
    });

    final ValueEventListener trackListener = new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            if (dataSnapshot.exists()) {

                Track track = dataSnapshot.getValue(Track.class);
                track.setId(dataSnapshot.getKey());
                trackItems.add(0, track);
                myListView.setItemChecked(0, true);
                refreshList();


            }
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {
            shortWarnToast("Veriler yüklenirken bir hata oluştu.");
        }
    };


    ValueEventListener user_tracksListener = new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            trackItems.clear();
            pos = -1;
            Iterable<DataSnapshot> user_trackChildren = dataSnapshot.getChildren();
            for (DataSnapshot track : user_trackChildren) {
                String key = track.getKey();
                mDatabaseReference.child("/tracks/" + key).addValueEventListener(trackListener);
            }
            refreshList();

        }

        @Override
        public void onCancelled(DatabaseError databaseError) {
            shortWarnToast("Veriler yüklenirken bir hata oluştu.");
        }
    };

标签: javaandroidfirebaseandroid-studiofirebase-realtime-database

解决方案


推荐阅读