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

标签 android firebase

我很难弄清楚如何将更多项目动态添加到 Firebase 中的列表。截至目前,我只能在正确的 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);
            }
        });

//这是我尝试向“userItems”列表添加其他项目的方式

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"
     }
   }
}

}

最佳答案

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

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

您似乎想向该节点添加其他子节点。要添加另一个 child ,您将需要该特定 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"
     }
  }
}

关于android - 在 Android 的 Firebase 中将项目添加到列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36198795/

相关文章:

Swift - 使用 URL 下载的低分辨率 firebase 照片

java - 根据移动和桌面浏览器切换布局

android - WebView 不适用于 INTERNET 权限集

java - 如何连接 Android 4.3.5 (GA) 的 apache HttpClient 库?

android - 像 mx 播放器一样滑动手势

java - Android 到虚幻引擎接口(interface) (C++)

ios - 从 Firebase 检索数据到标签 'Swift Project'

javascript - Firebase 多路径更新 "invalid data; couldn' t 解析 JSON 对象、数组或值”

android - 使用 Firebase 同步应用程序和服务器数据库

firebase - 管理 Cloud Firestore 中的非规范化/重复数据