如何使用Firebase Android在列表视图中删除重复数据 [英] How to remove duplicate data in list view with firebase android

查看:44
本文介绍了如何使用Firebase Android在列表视图中删除重复数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

** 已解决 **** 以下帖子中的解决方案*******以下帖子中的解决方案 ******* **

** SOLVED **** SOLUTION IN BELOW POST ******* SOLUTION IN BELOW POST ******* **

同学,我得到了一个头缓存,以了解如何解决使用Firebase删除列表视图中的重复数据的问题.我只需要1个项目数据即可显示在列表视图中.在屏幕截图中显示为示例

实际代码:

  ArrayList<ShowCliente> myList = new ArrayList<>();

    final ArrayAdapter<ShowCliente> arrayAdapter = new ArrayAdapter<>(getActivity(),android.R.layout.simple_list_item_1, myList);

   newListView.setAdapter(arrayAdapter);
 gDatabase.child("cliente").addChildEventListener(new ChildEventListener() {
        @Override
        public void onChildAdded(DataSnapshot dataSnapshot, String s) {
            ShowCliente show = dataSnapshot.getValue(ShowCliente.class);
            myList.add(show);
            //myList.clear();

            //*********************************
            arrayAdapter.notifyDataSetChanged();
            checkEmpty();
        }

        @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) {

        }
    });

最后尝试的代码:这是我今天尝试解决的问题,任何不起作用的方法,请将其发布给您:(

        //*************************************23/03/2018 **** **************** ATTEMP 1

    //VARIABLES
ArrayList<ShowCliente> myList = new ArrayList<>();
List<ShowCliente> myShow = new ArrayList<>();
ArrayList<ShowCliente> mList1 = new ArrayList<>(new HashSet<ShowCliente>(myList));
//HashSet<ShowCliente> myHash = new HashSet<>();

     //LEE TODOS DATOS DE LOS CHILD DE LA BASE DE DATOS
          ShowCliente show  = dataSnapshot.getValue(ShowCliente.class);
          //DISMINUIR A 1 LOS CLIENTES REPETIDOS EN LISTA
            Iterator<ShowCliente> iteShow = myList.iterator();
            while(iteShow.hasNext()){
                ShowCliente ite = iteShow.next();
                if(ite.equals(show)) iteShow.remove();
            }
            myList.add(show);

          //ShowCliente key = dataSnapshot.getKey();
          //mKeys.add(key);
          arrayAdapter.notifyDataSetChanged();
          checkEmpty();


    //****************************************************************** ATTEMP 2

    for(DataSnapshot shot : dataSnapshot.getChildren()){
                ShowCliente show = shot.getValue(ShowCliente.class);
                    String compare = String.valueOf(show.getRazonsoc());
                   if(show.getRazonsoc() != compare){
                       myList.add(show);
                   }
            }


    //****************************************** ATTEMP 3

       ShowCliente show = dataSnapshot.getValue(ShowCliente.class);
            //myList.clear();
            myList.add(show);
            if(myList.indexOf(show) == myList.lastIndexOf(show)){
                myList.clear();

            }

            arrayAdapter.notifyDataSetChanged();
            checkEmpty();      

   //************************************** ATTEMP 4

    ShowCliente show = dataSnapshot.getValue(ShowCliente.class);

            myShow.add(show);

            HashSet<ShowCliente> hashSet = new HashSet<>();
            hashSet.addAll(myShow);
            myShow.clear();
            myShow.addAll(hashSet);

   //************************************ ATTEMP 5 

             for(DataSnapshot shot : dataSnapshot.getChildren()){
                ShowCliente show = shot.getValue(ShowCliente.class);
                String value = show.getRazonsoc();
                stringList.clear();
                stringList.add(value);

            }

非常感谢您的评论和解决方案

推荐答案

解决方案(精细工作):

 @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            for(DataSnapshot data : dataSnapshot.getChildren()) {
                ShowCliente show = data.getValue(ShowCliente.class);
                myList.add(show);
                System.out.println("Duplicate:"+myList);
            }

            for(int i=0; i < myList.size(); i++){
                for(int j=0; j < myList.size(); j++){
                    if(myList.get(i).equals(myList.get(j))){
                        myList.remove(j);
                        //j;
                    }
                }
            }
            arrayAdapter.notifyDataSetChanged();
            checkEmpty();

这篇关于如何使用Firebase Android在列表视图中删除重复数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆