gpt4 book ai didi

java - Firebase 获取所有子值并将其存储在数组中

转载 作者:行者123 更新时间:2023-12-02 05:52:35 27 4
gpt4 key购买 nike

我需要将所有子“答案”值从数据库获取到一个数组中。

之后,我想将该数组与另一个数组进行匹配。我是编码新手,我需要帮助。 My Database is linked here.我用下面的代码尝试了它,但我认为我的逻辑是错误的,我无法将 stringArray 与 ProductArray 匹配。

public class Activity extends AppCompatActivity {

private String[] stringArray = new String[3];
private String[] ProductArray = new String[]{"traveling","short","not much"};

private TextView productTwo;
private DatabaseReference mRef;

private int mQuestionNumber = 1;


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_recommendations);

productTwo = (TextView) findViewById(R.id.recommendations_product2);

mRef = FirebaseDatabase.getInstance().getReference().child("BTSpeakers").child(String.valueOf(mQuestionNumber));
mRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

if(dataSnapshot.exists())
{
String Answer = dataSnapshot.child("answer").getValue().toString();

//Store Answer values of Database in Array
stringArray[mQuestionNumber] = Answer;
}
}

@Override
public void onCancelled(@NonNull DatabaseError databaseError) {

}
});
mQuestionNumber++;

//If array values equals ProductArray then , setText To Product2
if(ProductArray.equals(stringArray))
{
productTwo.setText("Speakers");
}
}
}

最佳答案

如果使用列表而不是数组,效率会更高,在您的情况下,您可以执行以下操作:

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_recommendations);

productTwo = (TextView) findViewById(R.id.recommendations_product2);

List<String> productList = new ArrayList<String>();
list.add("traveling");
list.add("short");
list.add("not much");

List<String> answerList = new ArrayList<String>();
mRef = FirebaseDatabase.getInstance().getReference().child("BTSpeakers");
mRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

if(dataSnapshot.exists())
{
for(DataSnapshot ds : dataSnapshot.getChildren()){
String answer = ds.child("answer").getValue().toString();
answerList.add(answer);
if(productList.equals(answerList)){
productTwo.setText("Speakers");
}

}
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {

}
}

首先,在列表中添加元素,然后添加对父节点 BtSpeakers 的引用,然后在数据快照中循环并检索所有答案

关于java - Firebase 获取所有子值并将其存储在数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56037648/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com