Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Dúvidas sobre spinner

Eu tenho uma activity com uma listview onde eu fiz um adapter para preencher cada linha. Em cada linha desse listview eu tenho um codigo de produto e um spinner que escolho uma localização.

Quando eu escolho uma opção no spinner eu adiciono uma localização no produto e faço uma varredura na lista procurando produtos com o mesmo código, então atualizo a mesma localização neles. Eu automatizei esse processo pra facilitar pro usuário não precisar colocar manualmente a mesma localização em produtos iguais em todos os itens da lista, e esse processo já funciona.

O meu problema é que se eu tiver uma lista de 10 produtos com o mesmo código, o listview atualiza somente o último spinner. Como faço para preencher adequadamente os 10 itens?

Código do adapter que preencho o spinner:

  @Override
                public View getView(int position, View convertView, final ViewGroup parent) {

                    final ReposicaoItem item = listaReposicao.get(position);
                    final LayoutInflater inflater = LayoutInflater.from(context);
                    final View view = inflater.inflate(R.layout.item_reposicao_produto,null);

                    spLocalizacao = view.findViewById(R.id.reposicao_sp_localizacao);

                    preencheSpinner();
                    preencherLocalizacao(item);

                    return view;
                }

            private void preencherLocalizacao(final ReposicaoItem item) {

                            spLocalizacao.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
                                @Override
                                public void onItemSelected(AdapterView<?> parent, View v, int position, long id) {
                                    String local = parent.getSelectedItem().toString();
                                    int idLocal = parent.getSelectedItemPosition();
                                    int idProduto = item.getId_produto();
                                    int index = 0;
                                    for (ReposicaoItem r: listaReposicao) {
                                       if(idProduto==r.getId_produto()) {

       listaReposicao.get(index).setLocalPresencial(local);
                                  listaReposicao.get(index).setIndiceLocal(idLocal);

                                        }
                                        index++;
                                    }
                                    preencheSpinner();
                                }

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

                                }
                            });

                }

            private void preencheSpinner() {
                    for (ReposicaoItem re: listaReposicao
                         ) {
                            adapter = new ArrayAdapter<>(context,android.R.layout.simple_spinner_item,locaisPresencial);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                                spLocalizacao.setAdapter(adapter);
                                if(re.getLocalPresencial()!=null){
                                    spLocalizacao.setSelection(re.getIndiceLocal());
                                }
                            }
                        }
                    }
                }
1 resposta
solução!

Alguém tem uma resposta? Ainda não consegui ajustar isso.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software