Переменная в цикле for не идентифицируема, а не объявлена ​​и инициализирована в цикле - PullRequest
0 голосов
/ 28 июня 2019

Я получаю список из базы данных комнаты и в цикле for, когда я объявил переменную и инициализирую, но он не может быть идентифицирован в цикле for.

код изображения здесь

Я объявил переменную вне цикла for, эта ошибка исчезла. но тогда спиннер показывает только последний элемент списка.

Ответы [ 3 ]

3 голосов
/ 28 июня 2019

Вы новичок в стеке, поэтому, возможно, вы этого не знали, но в следующий раз вставьте свой код в вопрос. Не используйте скриншот

Чтобы ответить на ваш вопрос, у вас есть лишняя точка с запятой. Изменить на

for (int position = 0; position < products.size() - 1; position++)
{
    // Etc
}
1 голос
/ 28 июня 2019

удалить "; ", который находится в конце for строки цикла

Определить ArrayAdatper сверху

ArrayAdatper<String> aa; 

в методе onChangedпосле цикла добавьте строку ниже:

if(aa != null) {
   aa.notifyDataSetChanged();
}
0 голосов
/ 28 июня 2019

Спасибо за ваш ответ, но я решил это с помощью итератора.

    list = new ArrayList<Product>();
    product = new ArrayList<String>();

    //Views
    Spinner mSpinner = (Spinner) findViewById(R.id.add_sale_spinner);


    viewModel = ViewModelProviders.of(this).get(ProductViewModel.class);
    viewModel.getAllProduct().observe(this, new Observer<List<Product>>() {
        @Override
        public void onChanged(@Nullable List<Product> products) {
            //Creating the ArrayAdapter instance having the bank name list
            Log.d(TAG, "onChanged: "+products.size()+ "Fdsfsdfds");
            Iterator<Product> iterator = products.iterator();
            while(iterator.hasNext()){
                Product obj = iterator.next();
                list.add(obj);
                product.add(obj.getProductName().toString());
            }
        }
    });
    ArrayAdapter<String> aa = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, product);
    aa.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    mSpinner.setAdapter(aa);
...