使用Firebase数据库中的键填充Spinner,然后从第一个选择中填充另一个Spinner [英] Populating a Spinner with keys from a Firebase database, then another Spinner from the first's selection
本文介绍了使用Firebase数据库中的键填充Spinner,然后从第一个选择中填充另一个Spinner的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想在单个Spinner
中获取所有的组号"键,然后在第二个Spinner
中获取所选组号"的所有学校号"键.
I want to get all of the "Group No" keys in a single Spinner
, then all of the "School No" keys of the selected "Group No" in a second Spinner
.
这是我的数据库:
这是我的Java代码:
Here's my Java code:
public class Collection extends AppCompatActivity {
TextView ttl, tgat, tsch;
Button btnshw, btngt;
Spinner sping;
DatabaseReference d2ref;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_collection);
tgat = (TextView) findViewById(R.id.texigat);
tsch = (TextView) findViewById(R.id.texisch);
//tcls = (TextView) findViewById(R.id.texiclass);
ttl = (TextView) findViewById(R.id.texirs);
btnshw = (Button) findViewById(R.id.bshow);
btngt = (Button) findViewById(R.id.bgat);
sping = (Spinner) findViewById(R.id.spingat);
btnshw.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
d2ref = FirebaseDatabase.getInstance().getReference().child("2018-19").child("Group No 14")
.child("School no 109").child("Standard 2nd");
d2ref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
String rs = dataSnapshot.child("Rupees").getValue().toString();
ttl.setText(rs);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
});
btngt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
d2ref = FirebaseDatabase.getInstance().getReference().child("2018-19");
ValueEventListener eventListener = new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
final List<String> grpno = new ArrayList<String>();
for (DataSnapshot dsnap : dataSnapshot.child("Group No 14").getChildren()) {
String grp = dsnap.getKey();
grpno.add(grp);
}
ArrayAdapter<String> adapter = new ArrayAdapter<String>(Collection.this, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
sping.setAdapter(adapter);
/*I wasn't able to get the value in 1st spinner so I didn't
wrote program for second spinner*/
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
};
d2ref.addListenerForSingleValueEvent(eventListener);
}
});
}
}
我试图在TextView
中获取它,并用Button
递增该值,但是TextView
在其中仅获得第2组".
I've tried to fetch it in the TextView
and increment the value with the Button
, but the TextView
gets only "Group No 2" in it.
推荐答案
将密钥放入Spinner
就像将值放入Spinner
一样简单.您要做的就是从for
循环中删除child()
.
Putting the key into a Spinner
is as simple as putting the value into the Spinner
. All you have to do is to remove the child()
from the for
loop.
而不是这样做:
for (DataSnapshot dsnap : dataSnapshot.child("Group No 14").getChildren()) {
String grp = dsnap.getKey();
grpno.add(grp);
}
您必须这样做:
for (DataSnapshot dsnap : dataSnapshot.getChildren()) {
String grp = dsnap.getKey();
grpno.add(grp);
}
希望这会有所帮助.
这篇关于使用Firebase数据库中的键填充Spinner,然后从第一个选择中填充另一个Spinner的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文