В Android Передача динамических c значений списка строк в счетчик не отображается в макете нижнего листа? - PullRequest
0 голосов
/ 06 апреля 2020

Я создаю Spinner внутри Bottom Sheet Dialog, здесь я получаю значения счетчика от размера, размер - это строка. Я получаю эту строку из базы данных Firebase в реальном времени. Я открываю макет нижнего листа, пока пользователь щелкает элементы Recyclerview. Я пробовал размер со значениями stati c (String size="S,M,L,XL,XXL";); это работает хорошо, но если получить значения размера, как это (ниже кода), элементы Spinner, подобные этому screenshot. что здесь пошло не так?

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;
                }

Ответы [ 2 ]

1 голос
/ 06 апреля 2020

Переместите эту часть в другой метод:

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();

0 голосов
/ 06 апреля 2020

Мои ошибки были в том, что я назначил значения счетчика вне метода 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;
                    }
...