使用Firebase数据库中的键填充Spinner,然后从第一个选择中填充另一个Spinner [英] Populating a Spinner with keys from a Firebase database, then another Spinner from the first's selection

查看:146
本文介绍了使用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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆