首页 > 解决方案 > 所选项目上的 Android 微调器不起作用?

问题描述

所以伙计们,我正在尝试将OnItemSelectedListener实现到我的微调器。数据从火力库中检索并添加到数组列表中,并且我添加到adatper中的数组列表

//spinner stufff
//variables:

    Spinner schoolNamesSpinner;
    DatabaseReference databaseReference;
    ArrayList<String> instituteNames;
    ArrayAdapter<String> adapter;


        adapter = new ArrayAdapter<>(studentsLogIn.this,
                android.R.layout.simple_spinner_dropdown_item, instituteNames);

        schoolNamesSpinner.setAdapter(adapter);
        adapter.notifyDataSetChanged();

        **// populating selector;**

        populatingSelecto();

填充微调器 在此处输入图像描述

**// populating selector**

private void populatingSelecto() {

    databaseReference.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot snapshot) {
            if (snapshot.exists()) {

                for (DataSnapshot ids : snapshot.getChildren()) {
                    uniqIds.add(ids.getKey());

                }

                for (int i = 0; i < uniqIds.size(); i++) {
                    databaseReference.child(uniqIds.get(i)).addValueEventListener(new ValueEventListener() {
                        @Override
                        public void onDataChange(@NonNull DataSnapshot snapshot) {
                            if (snapshot.exists()) {
                                String name = snapshot.child("INSTITUTE").child("institutionName").
                                        getValue().toString();

                                instituteNames.add(name);


                            }
                        }

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

                        }
                    });
                }

            } else {
                dialogboxMeathod(studentsLogIn.this, "No Institutes on the Record");
            }
        }

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

        }
    });


}

因此,在所选项目上,我试图显示所选项目的文本,但它不起作用

    schoolNamesSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
            Toast.makeText(studentsLogIn.this, instituteNames.get(position), Toast.LENGTH_SHORT).show();
        }

        @Override
        public void onNothingSelected(AdapterView<?> parent) {

        }
    });

标签: androidfirebasefirebase-realtime-databasespinneronitemselectedlistener

解决方案


我必须在添加东西后通知适配器

 for (int i = 0; i < uniqIds.size(); i++) {
            databaseReference.child(uniqIds.get(i)).addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(@NonNull DataSnapshot snapshot) {
                    if (snapshot.exists()) {
                        String name = snapshot.child("INSTITUTE").child("institutionName").getValue().toString();
                        instituteNames.add(name);
                        // here i have to add the adapter.notifydatachanged
                    }
                }
            }
        }

推荐阅读