Firebase Spinner问题:选中项无法更新Spinner文本
问题分析
你的代码存在两个关键问题,导致Spinner选中后文本不更新,同时还会触发不必要的逻辑:
- Switch语句缺少
break:onItemSelected中每个case执行完后未添加break,选中DCAccount2时会继续执行NumofPayments的代码逻辑,干扰Spinner的正常状态更新。 - ArrayAdapter的上下文和布局资源错误:
- 使用
getApplicationContext()作为ArrayAdapter上下文,可能导致视图渲染异常; DC_Array_Adapter的下拉项布局与选中项布局混用同一资源,未使用正确的下拉布局,影响选中后的文本显示。
- 使用
修正后的代码
1. 修正Spinner初始化代码
// DCAccount2 Spinner 初始化 Spinner DC_Account_Spr = findViewById(R.id.DCAccount2); DC_Account_Spr.setOnItemSelectedListener(this); // 使用Activity上下文而非Application上下文,区分选中项和下拉项布局 ArrayAdapter<String> DC_Array_Adapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, user_debit_acct_DL); DC_Array_Adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); DC_Account_Spr.setAdapter(DC_Array_Adapter); // NumofPayments Spinner 初始化 Spinner Num_Pymts_Spr = findViewById(R.id.NumofPayments); Num_Pymts_Spr.setOnItemSelectedListener(this); ArrayAdapter<CharSequence> Num_Pymts_adapter = ArrayAdapter.createFromResource(this, R.array.Num_Payments, com.google.android.material.R.layout.support_simple_spinner_dropdown_item); Num_Pymts_adapter.setDropDownViewResource(com.google.android.material.R.layout.support_simple_spinner_dropdown_item); Num_Pymts_Spr.setAdapter(Num_Pymts_adapter);
2. 修正onItemSelected方法
@Override public void onItemSelected(AdapterView<?> parent, View view, int position, long l) { switch(parent.getId()) { case R.id.DCAccount2: String Account_Selected_Str = parent.getItemAtPosition(position).toString(); Toast.makeText(this, Account_Selected_Str, Toast.LENGTH_LONG).show(); break; // 添加break终止当前case执行 case R.id.NumofPayments: String Num_Payments_Str = parent.getItemAtPosition(position).toString(); Toast.makeText(this, Num_Payments_Str, Toast.LENGTH_LONG).show(); break; // 添加break终止当前case执行 } } @Override public void onNothingSelected(AdapterView<?> adapterView) { // 空实现即可 }
额外注意事项
如果user_debit_acct_DL是通过Firebase异步加载的数据,需确保数据加载完成后调用DC_Array_Adapter.notifyDataSetChanged()更新Adapter,否则Spinner可能无法及时刷新数据。
内容的提问来源于stack exchange,提问作者Jamen_98
相关产品推荐
相关产品推荐

