Android 将动态字符串列表值传递到微调器在底部 sheet 布局中不可见?

In Android Passing dynamic String List values into the spinner is not visible in bottom sheet layout?

我正在 Bottom Sheet Dialog 中创建 Spinner,这里我从大小中获取微调器值,大小是一个字符串。我从 firebase 实时数据库中得到这个字符串。当用户单击 Recyclerview 项目时,我打开底部 sheet 布局。我尝试使用静态值 (String size="S,M,L,XL,XXL";);这运行良好,但如果获得像这样的大小值(在代码下方)像这样的 Spinner 项目 。这里出了什么问题?

String size="";

        @Nullable
                @Override
                public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState)  {
                    View view=inflater.inflate(R.layout.bottom_sheet_layout,container,false);


    databaseReference= FirebaseDatabase.getInstance().getReference().child("Product_Details");



            databaseReference.addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                    for(DataSnapshot dataSnapshot1:dataSnapshot.getChildren())
                    {
                        Model_upload mp=dataSnapshot1.getValue(Model_upload.class);

                        if(itemid.equals(mp.getId()))
                        {

                            size=mp.getSize();

                        }
                    }
                }

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

                }
            });            

                    String[] sizeslist = size.split(",");

                    ArrayAdapter<String> adaptersize = new ArrayAdapter<String>(getContext(),
                            android.R.layout.simple_spinner_item, sizeslist);
                    adaptersize.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                    spinner.setAdapter(adaptersize);


                    return view;
                }

将此部分移至其他方法:

String[] sizeslist = size.split(",");

ArrayAdapter<String> adaptersize = new ArrayAdapter<String>(getContext(),
            android.R.layout.simple_spinner_item, sizeslist);
adaptersize.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adaptersize);

此行之后size=mp.getSize();

调用此方法。

或者您可以将这些行移动到 size=mp.getSize();

我的错误是我在 addValueEventListener() 方法之外分配了微调器值,这对我来说工作正常

String size="";

            @Nullable
                    @Override
                    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState)  {
                        View view=inflater.inflate(R.layout.bottom_sheet_layout,container,false);


        databaseReference= FirebaseDatabase.getInstance().getReference().child("Product_Details");



                databaseReference.addValueEventListener(new ValueEventListener() {
                    @Override
                    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                        for(DataSnapshot dataSnapshot1:dataSnapshot.getChildren())
                        {
                            Model_upload mp=dataSnapshot1.getValue(Model_upload.class);

                            if(itemid.equals(mp.getId()))
                            {

                                size=mp.getSize();

                                String[] sizeslist = size.split(",");

                        ArrayAdapter<String> adaptersize = new ArrayAdapter<String>(getContext(),
                                android.R.layout.simple_spinner_item, sizeslist);
                        adaptersize.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                        spinner.setAdapter(adaptersize);

                            }
                        }
                    }

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

                    }
                });            

                        return view;
                    }