Android firebase应用发布了多个值

时间:2017-01-28 17:23:15

标签: java android firebase firebase-realtime-database

我有一个简单的应用程序,它从多选列表视图中获取值。如果我将数据推送到数据库中的输出,就像:

  • 一月
  • 一月
  • 二月
  • 二月
  • 二月
  • 三月
  • 三月
  • 等...

重复,我只想要检查项目,例如一月, 二月,三月,没有重演。

这是我的主要活动.java

 FirebaseDatabase.getInstance().setPersistenceEnabled(true);
    FirebaseDatabase database = FirebaseDatabase.getInstance();
        final DatabaseReference myRef = database.getReference();

        myList = (ListView) findViewById(R.id.ListView);
        getChoice = (Button) findViewById(R.id.button2);
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_multiple_choice, listContent);
        myList.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
        myList.setAdapter(adapter);
        getChoice.setOnClickListener(new Button.OnClickListener() {
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                String selected = "";
                int cntChoice = myList.getCount();
                SparseBooleanArray sparseBooleanArray = myList.getCheckedItemPositions();
                for (int i = 0; i <=cntChoice;i++) {
                    if (sparseBooleanArray.get(i)) {
                        selected = myList.getItemAtPosition(i).toString();
                    }
                    myRef.push().setValue(selected);
                }
            }
        });
    }
}

1 个答案:

答案 0 :(得分:5)

您正在if之外调用您的setValue方法。您应该在if中设置值,因此它只写一次。将您的代码更改为:

            for (int i = 0; i <=cntChoice;i++) {
                if (sparseBooleanArray.get(i)) {
                    selected = myList.getItemAtPosition(i).toString();
                    myRef.push().setValue(selected);
                }
            }