超链码语者 2020-03-20 16:43 采纳率: 0%
浏览 385

android为什么点击spinner用静态数据可以监听,而动态加载的不行?

android为什么点击spinner用静态数据可以监听,而动态加载的不行?
``` Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what) {
case -1:
Toast.makeText(Cache.getContext().getApplicationContext(), getResources().getString(R.string.errorMsg), Toast.LENGTH_SHORT).show();
break;

    case 2://公司名称下拉表
      if (companyNameDto != null && companyNameDto.getStatus() != null) {
        if (companyNameDto.getStatus() == 200) {
          List<MonitorCompany> list = companyNameDto.getData();
          Log.i("sysout", "companyNameList:" + list);
          companyNames.add("所有单位");
          for (int i = 0; i < list.size(); i++) {
            companyNames.add(list.get(i).getName());
          }
          Log.i("sysout", "companyNames:" + list.size() + companyNames);
          }
        }
      }
      break;

    default:
      break;
  }
}

};
/**

  • 加载公司列表
    */
    public void loadCompany() {
    MyApplication.ThreadPoolProxyFactory.getNormalThreadPoolProxy().execute(new Runnable() {
    @Override
    public void run() {
    try {
    companyNameDto = ServerMain.listCompanyMenu("get", getResources().getString(R.string.listCompanyMenu), null);
    Log.i("Sysout", "companyData:" + companyNameDto);
    handler.sendEmptyMessage(2);
    } catch (Exception e) {
    handler.sendEmptyMessage(-1);
    e.printStackTrace();
    }
    }

    });
    List array1 = Arrays.asList("所有公司", "xx科技", "xx大学", "xx市", "上海市");
    List array2 = companyNames;
    Log.i("sysout", "array1:" +array1+ companyNames);
    DevListSpinAdapter adapterOne = new DevListSpinAdapter(this, array2, R.layout.spinner_item);
    spinner1.setAdapter(adapterOne);
    // spinner1.setSelection(0, true);
    // spinner1.setSelection(0);
    }

    /**

  • Spinner1点击事件
    */
    public class Spinner1ClickListener implements AdapterView.OnItemSelectedListener {
    // String ListenName = spinner1.getSelectedItem().toString();

    @Override
    public void onItemSelected(AdapterView<?> adapterView, View view, int position, long l) {
    //String str = (String) adapterView.getItemAtPosition(position);
    String str=spinner1.getSelectedItem().toString();
    //String str = (String) array1[position];
    // String str = (String) adapterView.getAdapter().getItem(i);
    /* String str = (String) companyNames.get(i);
    String str1 = (String) companyNames.toArray()[i];*/
    companyName = str;
    Log.i("sysout", "Spinner1str:" + str + companyName + companyNames);

    Toast.makeText(DeviceListActivity.this, str+companyName, Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onNothingSelected(AdapterView<?> adapterView) {

    }
    }

  • 写回答

1条回答 默认 最新

  • 柠檬味水溶cc 2020-03-23 14:44
    关注

    我也遇到了同样的情况,添加了 spinner2Adapter.notifyDataSetChanged();后问题解决了

    评论

报告相同问题?

悬赏问题

  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥15 stable diffusion
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿