for循环中的变量无法识别,而是在循环中声明并初始化

时间:2019-06-28 09:24:07

标签: android android-spinner android-room observers

当我声明一个变量并初始化但在for循环中无法识别时,我正在从会议室数据库和for循环中获取列表。

code image is here

我声明了for循环外的变量,该错误消失了。但微调框仅显示列表的最后一项。

3 个答案:

答案 0 :(得分:3)

您是Stackoverflow的初学者,因此您可能不知道这一点,但是,下次请将您的代码粘贴到问题中。不要截屏代码。

要回答您的问题,您需要添加一个分号。 更改为

for (int position = 0; position < products.size() - 1; position++)
{
    // Etc
}

答案 1 :(得分:1)

删除位于for循环行结尾

的“ ;

在顶部定义ArrayAdatper

ArrayAdatper<String> aa; 
在循环后的onChanged方法中

在行下面添加:

if(aa != null) {
   aa.notifyDataSetChanged();
}

答案 2 :(得分:0)

谢谢您的回答,但是我通过使用迭代器解决了这个问题。

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