для l oop не дает мне надлежащего результата в android - PullRequest
0 голосов
/ 18 июня 2020

Привет, в приведенном ниже коде я получаю значение продукта, productid. Теперь, если я выбрал текстовое представление автозаполнения, я получаю строку, которую сравниваю, и задаю текст.

Но каждый раз, когда он дает условие me else означает 1000.

может ли кто-нибудь помочь мне, где я сделал ошибку

метод java1:

   private ArrayList<SynFields> productList=new ArrayList<>();

               for (SynFields synFields1 : synFields) {

                            String name = synFields1.getName();
                            values = synFields1.getValue();

                            if (name.equals("productid")) {
                                try {
                                    Gson gson = new Gson();
                                    String strJson = gson.toJson(values);
                                    JSONObject jsonObject = new JSONObject(strJson);
                                    String v = jsonObject.getString("label");
                                    String id = jsonObject.getString("value");
                                    productValue = v;
                                    productID = id;

                                    SynFields synFields2 = new SynFields(name, productID, productValue);
                                    productList.add(synFields2);
                                } catch (Exception ex) {
                                    Log.e("SalesStageFragment", "Exception is : " + ex.toString());
                                }

                            }

                        }

метод java2:

 autoproduct_name.setOnItemClickListener(new AdapterView.OnItemClickListener() {
           @Override
           public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

               productnames=adapter.getItem(position);

               for (SynFields synFields2 : productList) {
                   if (synFields2.getLabel().equals(productnames)) {
                       textunitprice.setText("2000");
                   }else {
                       textunitprice.setText("1000");
                   }
               }




           }
       });

Ответы [ 2 ]

0 голосов
/ 19 июня 2020

Да, я решил Моя проблема Сначала я добавил break и check с логическим значением. Теперь он работает отлично.

   autoproduct_name.setOnItemClickListener(new AdapterView.OnItemClickListener() {
           @Override
           public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

               productnames=adapter.getItem(position);

               boolean isSuccess = false;
               for (SynFields synFields2 : productList) {
                   Log.d("productList", String.valueOf(productList.get(position).getLabel()));
                   if (synFields2.getLabel().equalsIgnoreCase(productnames)) {
                       textunitprice.setText(productnames);
                       isSuccess = true;
                       break;
                   }else {
                       textunitprice.setText("");
                   }
               }




           }
       });
0 голосов
/ 18 июня 2020

вы можете проверить, есть ли проблема с заглавными буквами или мелким шрифтом для строк из «адаптера» и «списка продуктов». Чтобы справиться с этим, вы можете использовать 'equalsIgnoreCase' вместо 'equals' для следующих logi c,

if (synFields2.getLabel().equalsIgnoreCase(productnames)) {
    textunitprice.setText("2000");
 }
...