当我声明一个变量并初始化但在for循环中无法识别时,我正在从会议室数据库和for循环中获取列表。
我声明了for循环外的变量,该错误消失了。但微调框仅显示列表的最后一项。
答案 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);