将项目添加到Android中的Firebase中的列表

时间:2016-03-24 11:11:23

标签: android firebase

我很难弄清楚如何动态地向Firebase中的List添加更多项目。截至目前,我只能在正确的firebase位置添加一个项目。用户需要能够向列表中添加更多项目。我正在为数据使用自定义模型类。非常感谢任何帮助,谢谢。

 FloatingActionButton floatSave = (FloatingActionButton) rootView.findViewById(R.id.fabSave);
        floatSave.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                myFirebaseRef = new Firebase("https://you.firebaseio.com/");
                myFirebaseRef = new Firebase("https://you.firebaseio.com/" + "/users/" + myFirebaseRef.getAuth().getUid());
                String partyname = partyName.getText().toString();
                String when = fromDateEtxt.getText().toString();
                String timeOf = fromTimeEtxt.getText().toString();
                String userItems1 = addThisItem.getText().toString();
                userItems.add(userItems1);
                Map<String,Object> values = new HashMap<>();
                values.put("partyname", partyname);
                values.put("When", when);
                values.put("timeOf", timeOf);
                values.put("userItems", userItems);
                myFirebaseRef.push().setValue(values);
            }
        });

//以下是我尝试向&#34; userItems&#34;添加其他项目的方法。列表

final Button addItem = (Button) rootView.findViewById(R.id.buttonAddItem);
        addItem.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                SharedPreferences pref = getActivity().getSharedPreferences("MyPref", 0);
                SharedPreferences.Editor editor = pref.edit();

                String savedParty = pref.getString("thisPostKey", null);
                myFirebaseRef = new Firebase("https://you.firebaseio.com/users/8d5d9915-54d8-4fc1-b92f-b45569e8089b/"+ savedParty + "/userItems");

                String additem = addThisItem.getText().toString();


                userItems.add(additem);
                myFirebaseRef.push().setValue(additem);
                System.out.println("There are " + thisKey + savedParty);


            }
        });

public class PartyPost {

private String partyname;
private String timeOf;
private String when;
private List userItems;


public PartyPost(String partyname, String timeOf, String when, List userItems) {
    // empty default constructor, necessary for Firebase to be able to deserialize blog posts
    this.partyname = partyname;
    this.timeOf = timeOf;
    this.when = when;
    this.userItems = userItems;
}

public void setPartyname(String partyname) {
    this.partyname = partyname;
}

public void setTimeOf(String timeOf) {
    this.timeOf = timeOf;
}

public void setWhen(String when) {
    this.when = when;
}

public void setUserItems(List<String> userItems) {
    this.userItems = userItems;
}

public String getPartyname() {
    return partyname;

}
public String getTimeOf() {
    return timeOf;
}
public String getWhen() {
    return when;
}

public List getUserItems() {
    return userItems;
}

}

 {
 "users" : {
   "8d5d9915-54d8-4fc1-b92f-b45569e8089b" : {
     "-KDcHcfvc3CM-d8TWPE9" : {
      "When" : "2-2-2017",
      "partyname" : "Super Bowl",
      "timeOf" : "5:00PM",
      "userItems" : [ "Beer" ]
    },
     "-KDcHcjRbxXzCvRFa-No" : {
      "userItems" : {
      "-KDcLXIJ7I9TUFEDyyrA" : "Chips"
     }
   }
}

} }

1 个答案:

答案 0 :(得分:5)

您的/ userItems节点有子节点,根据问题,它有一个子节点。

"userItems" : {
  "-KDcLXIJ7I9TUFEDyyrA" : "Chips"
}

您似乎想要向该节点添加其他子节点。要添加另一个子节点,您需要指向该特定userItems节点的路径,这里是伪代码

thisUsersUserItemsRef = /users/8d5d9915-54d8-4fc1-b92f-b45569e8089b/-KDcHcjRbxXzCvRFa-No/userItems

然后push()值

values.put("another_user_item", "docs ftw");

thisUsersUserItemsRef.push().setValue(values);

这将导致

"-KDcHcjRbxXzCvRFa-No" : {
  "userItems" : {
     "-KDcLXIJ7I9TUFEDyyrA" : "Chips",
     "-JHoijoiqjodj8jkadiQ" {
         "another_user_item": "docs ftw"
     }
  }
}